我有一個字符串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