gpt4 book ai didi

string - componentsSeparatedByString - 获取作为拆分字符串的组件

转载 作者:可可西里 更新时间:2023-11-01 02:20:09 24 4
gpt4 key购买 nike

我在字符串上使用 componentsSeparatedByString 将一个长字符串拆分为一个字符串数组,使用逗号 (,) 作为要拆分的字符串。问题是,一个组成部分是逗号字符。例如,字符串是“a,b,c,,,1,2,3”。调用 componentsSeparatedByString 后数组是 ["a", "b", "c", "", "", "1", "2", "3"] 但我需要它是[“a”、“b”、“c”、“、”、“1”、“2”、“3”]。幸运的是我可以修改字符串,但我真的不想将所有逗号更改为不同的字符。有没有一种方法可以“转义”我需要的逗号作为组件,这样 componentsSeparatedByString 就不会在中间那个逗号上拆分?

我尝试用 \u{002C} 替换它,但它比那更聪明。仍然将其解释为逗号,因此它会拆分。

最佳答案

如果您使用标准库中的 split 方法而不是 componentsSeparatedByString 来执行此操作,您可以使用有状态闭包以一种相当 hacky 的方式执行此操作,方法是记住是否最后一个元素是一个逗号,然后没有分成两行:

let s = "a,b,c,,,1,2,3"

var lastWasComma = false
let array = split(s.characters) { (c: Character)->Bool in
if c == "," {
lastWasComma = !lastWasComma
}
else {
lastWasComma = false
}
return lastWasComma
}.map(String.init)

debugPrint(array)
// prints ["a", "b", "c", ",", "1", "2", "3"]

(这是针对 2.0 的 - 如果您使用的是 1.2,请从末尾删除 .charactersmap,因为字符串在 2.0 之前可以直接切片)

关于string - componentsSeparatedByString - 获取作为拆分字符串的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31224210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com