我有一個字符串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. Android將字符串拆分爲數組
- 9. 將字符串拆分爲雙數組
- 10. 將字符串拆分爲數組Shellllscript
- 11. 拆分字符串數組
- 12. 將字符串拆分爲「|」
- 13. 將lua字符串拆分爲字符
- 14. Elisp拆分字符串函數來拆分字符串。字符
- 15. 如何將字符串拆分爲字母字符串和數字字符串?
- 16. 將字符串拆分爲多個字符串組
- 17. 將字符串拆分爲基於分隔符的字符串數組
- 18. 將字符串拆分爲不帶分隔符的字符串數組C
- 19. 拆分和排序字符串數組swift 3
- 20. 將字符串拆分爲字符數組 - Objective-C
- 21. 將字符串拆分成數組
- 22. 將字符串數組拆分成
- 23. 將字符串生成器拆分爲字符串字符串特定字符
- 24. C++如何將字符串拆分爲字符串和整數?
- 25. 將字符串拆分爲完全動態分配的字符串數組
- 26. 將字符串拆分爲字典
- 27. 拆分字符串參數並選擇該字符串數組?
- 28. 如何將字符串(例如「xPM - yPM」)拆分爲兩個字符串,Swift
- 29. 將字符串編碼爲HTML字符串Swift 3
- 30. 使用php將字符串拆分爲數組中的字符串
什麼是你正確的答案,如果輸入 '-1-2a000 + 4-1'? – Cruz
@SwiftyCruz它會是'[「 - 」,「1」,「 - 」,「2」,「a」,「000」,「+」,「4」,「 - 」,「1」] –
如果你更詳細地描述模式,我想你會得到更好的答案。 – Alexander