我有一个字符串let string = "!101eggs"
。现在,我想要有一个像这样的数组["!", "101", "e", "g", "g", "s"]
。我怎样才能做到这一点?Swift 3:按字符串将字符串拆分为数组
0
A
回答
1
对不起它太长
当输入
print("-1-2a000+4-1/000!00005gf101eg14g1s46nj3j4b1j5j23jj212j4b2j41234j01010101g0000z00005g0000".toArrayByNumber())
结果:["-", "1", "-", "2", "a", "000", "+", "4", "-", "1", "/", "000", "!", "00005", "g", "f", "101", "e", "g", "14", "g", "1", "s", "46", "n", "j", "3", "j", "4", "b", "1", "j", "5", "j", "23", "j", "j", "212", "j", "4", "b", "2", "j", "41234", "j", "01010101", "g", "0000", "z", "00005", "g", "0000"]
extension Int {
func toZeroString() -> String {
return (0 ..< self).reduce("", { (result, zero) -> String in
return result + "0"
})
}
}
extension String {
func toArrayByNumber() -> [String] {
var array: [String] = []
var num = 0
var zeroCount = 0
var zeroEnd = false
for char in self.characters {
if let number = Int("\(char)") {
if zeroEnd == false && number == 0 {
zeroCount += 1
} else {
num = num * 10 + number
zeroEnd = true
}
} else {
if num != 0 {
array.append(zeroCount.toZeroString() + ("\(num)"))
} else if zeroCount > 0 {
array.append(zeroCount.toZeroString())
}
array.append(String(char))
num = 0
zeroCount = 0
zeroEnd = false
}
}
if num != 0 {
array.append(zeroCount.toZeroString() + ("\(num)"))
} else if zeroCount > 0 {
array.append(zeroCount.toZeroString())
}
return array
}
}
+0
这很好!非常感谢。 –
2
我认为你最难的部分是“号码在哪里”?只要这仅仅是数字的简单序列,正则表达式可以很容易地发现:
let string = "!101eggs"
let patt = "\\d+"
let reg = try! NSRegularExpression(pattern:patt)
let r = reg.rangeOfFirstMatch(in: string,
options: [],
range: NSMakeRange(0,string.utf16.count)) // {1,3}
所以,现在你知道这个数字开始在位置1和长3个字符。剩下的部分作为读者的练习。
相关问题
- 1. C#拆分字符串 - 将字符串拆分为数组
- 2. 将字符串拆分为数组(每个字符) - Swift
- 3. 将字符串拆分为字符串
- 4. 将字符串拆分为字符串
- 5. 如何将字符串拆分为字符串数组?
- 6. 将字符串拆分为字符串数组
- 7. 将字符串拆分为字符串数组
- 8. 将字符串拆分为字符串数组
- 9. 将字符串拆分为字符串数组
- 10. 将字符串拆分为字符串数组。
- 11. C++将字符串拆分为字符串数组
- 12. 如何将字符串拆分为字符串数组?
- 13. 将字符串拆分为数组C
- 14. 将字符串拆分为数组Shellllscript
- 15. Android将字符串拆分为数组
- 16. 将字符串拆分为双数组
- 17. 将字符串拆分为数组C++
- 18. 将字符串拆分为数组
- 19. Bash:将字符串拆分为数组
- 20. 将字符串拆分为3个子字符串jquery/javascript
- 21. 使用拆分将字符串拆分为2个字符组?
- 22. 拆分字符串数组
- 23. 将字符串拆分为“。”
- 24. 将字符串拆分为“|”
- 25. 将字符串按长度拆分为字符串?
- 26. 将lua字符串拆分为字符
- 27. php将字符串拆分为字符
- 28. PatternSyntaxException将字符串拆分为“*”字符
- 29. Elisp拆分字符串函数来拆分字符串。字符
- 30. 如何将字符串拆分为字母字符串和数字字符串?
什么是你正确的答案,如果输入 '-1-2a000 + 4-1'? – Cruz
@SwiftyCruz它会是'[“ - ”,“1”,“ - ”,“2”,“a”,“000”,“+”,“4”,“ - ”,“1”] –
如果你更详细地描述模式,我想你会得到更好的答案。 – Alexander