fas*_*lgo 6 string loops numbers while-loop swift
我正在努力从 Swift 中的字符串中提取数字。我正在执行以下操作:
let expression: String = "abc123aa223bb45"
for (indx, ch) in expression.enumerated() {
if ch.isLetter { continue }
else if ch.isNumber {
var val: Int = 0
while(indx < expression.count && ch.isNumber){
val = val * 10 + (ch.asciiValue - 48)
//how can I proceed and increment both indx and ch ...
}
// here I'm going to do smthing with every extracted number
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决我遇到的这个问题吗?
我也使用扩展
extension Character {
var asciiValue: Int {
get {
let s = String(self).unicodeScalars
return Int(s[s.startIndex].value)
}
}
}
Run Code Online (Sandbox Code Playgroud)
正如您在发布的代码片段中看到的
小智 6
以下代码片段将从字符串中提取数字
let expression: String = "abc123aa223bb45"
let stringArray = expression.components(separatedBy: CharacterSet.decimalDigits.inverted)
for item in stringArray {
if let number = Int(item) {
print(number)
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以对 Int 进行扩展,其功能如下
extension Int {
static func parse(from string: String) -> Int? {
return Int(string.components(separatedBy: CharacterSet.decimalDigits.inverted).joined())
}
}
Run Code Online (Sandbox Code Playgroud)
可以像这样使用
let expression: String = "abc123aa223bb45"
if let number = Int.parse(from: expression) {
print(number)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1645 次 |
| 最近记录: |