关于如何在 Swift 中将字符串拆分为所需字符串数组的问题

Posted

技术标签:

【中文标题】关于如何在 Swift 中将字符串拆分为所需字符串数组的问题【英文标题】:Question on how to split a string into an array of desired strings in Swift 【发布时间】:2020-12-11 13:33:37 【问题描述】:

我有一个问题。

有几种方法可以将字符串划分为字符串数组。

首先,我把字符串做成字符串数组的方式是,

let str = "F'2R'UU2"
let strArr: [String] = str.map  String($0) 
//strArr => ["F", "'", "2", "R", "'", "U", "U", "2"]

变成这样的字符串数组

但我想根据大写字母进行划分。例如,如果将字符串F2进行分割,则变为["F2"]而不是["F", "2"],如果将字符串F'2进行分割,则变为["F", "'", "2"]而不是["F'2"]

我想要的结果是,

let str = "F'2R'UU2"
<<<str to strArr>>>
//strArr => ["F'2", "R'", "U", "U2"]

请告诉我!

【问题讨论】:

不清楚。您希望数组的每个元素都是初始文本中的第一个字母 + 以下所有非字母? 是的,没错。帮帮我 【参考方案1】:

您可以使用reduce 在每个字符上迭代字符串,如果它是大写字母,则将其附加到数组中,否则将其添加到数组的最后一个元素中

let str = "F'2R'UU2"

let res = str.reduce(into: [String]()) 
    if $1.isUppercase || $0.isEmpty 
        $0.append("\($1)") 
     else 
        $0[$0.count - 1] = $0.last! + "\($1)"
    

【讨论】:

@JoakimDanielson 为什么不简单地使用$0[$0.count-1].append($1)。一个班轮$1.isUppercase || $0.isEmpty ? $0.append(String($1)) : $0[$0.count-1].append($1)

以上是关于关于如何在 Swift 中将字符串拆分为所需字符串数组的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Dart/flutter 中将视频文件分割成小块?

在 Swift 中将字符串拆分为数组?

关于在Hive中将特定字符分隔的字符串拆分成多行的应用

将列表中的内容拆分为所需的输出

如何在 c++ 中将字符串拆分为左括号和右括号之间的字符串列表?

如何在awk中将分隔字符串拆分为数组?