【问题标题】:Question on how to split a string into an array of desired strings in Swift关于如何在 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"]

请告诉我!

【问题讨论】:

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

标签: ios swift


【解决方案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)
猜你喜欢
  • 2014-10-29
  • 1970-01-01
  • 1970-01-01
  • 2017-06-27
  • 2012-02-22
相关资源
最近更新 更多