在Swift中,可以通过使用正则表达式或者遍历字符串的方式来从字符串中提取数字。
使用正则表达式: 在Swift中,可以使用NSRegularExpression类来进行正则表达式的匹配和提取。以下是一个使用正则表达式从字符串中提取数字的示例代码:
import Foundation
func extractNumbersFromString(inputString: String) -> [String] {
do {
let regex = try NSRegularExpression(pattern: "\\d+", options: [])
let results = regex.matches(in: inputString, options: [], range: NSRange(location: 0, length: inputString.utf16.count))
return results.map {
String(inputString[Range($0.range, in: inputString)!])
}
} catch let error {
print("Invalid regex: \(error.localizedDescription)")
return []
}
}
let inputString = "I have 123 apples and 456 oranges."
let numbers = extractNumbersFromString(inputString: inputString)
print(numbers) // Output: ["123", "456"]
这个示例代码定义了一个名为extractNumbersFromString
的函数,它接受一个字符串作为输入,并返回提取到的数字组成的数组。函数内部使用NSRegularExpression
类创建了一个匹配数字的正则表达式,并通过调用matches(in:options:range:)
方法来获取匹配结果。然后,将匹配结果转换为字符串,并将结果存储到数组中返回。
使用遍历字符串的方式: 在Swift中,也可以通过遍历字符串的方式逐个字符判断是否为数字,并将数字字符组成的子串添加到结果数组中。以下是一个使用遍历字符串的方式从字符串中提取数字的示例代码:
func extractNumbersFromString(inputString: String) -> [String] {
var numbers: [String] = []
var currentNumber: String = ""
let decimalDigits = CharacterSet.decimalDigits
for character in inputString {
if decimalDigits.contains(character.unicodeScalars.first!) {
currentNumber.append(character)
} else if !currentNumber.isEmpty {
numbers.append(currentNumber)
currentNumber = ""
}
}
if !currentNumber.isEmpty {
numbers.append(currentNumber)
}
return numbers
}
let inputString = "I have 123 apples and 456 oranges."
let numbers = extractNumbersFromString(inputString: inputString)
print(numbers) // Output: ["123", "456"]
这个示例代码定义了一个名为extractNumbersFromString
的函数,它接受一个字符串作为输入,并返回提取到的数字组成的数组。函数内部通过遍历字符串的方式逐个字符判断是否为数字,并将数字字符组成的子串添加到结果数组中。当遇到非数字字符时,将当前数字字符串添加到结果数组中,并清空当前数字字符串。最后,如果当前数字字符串不为空,将其添加到结果数组中。最终返回结果数组。
以上是在Swift中以特定的方式从字符串中提取数字的方法。这些方法可以帮助您在Swift开发中处理字符串中的数字提取需求。
企业创新在线学堂
腾讯技术开放日
【产研荟】直播系列
DBTalk技术分享会
第四期Techo TVP开发者峰会
“中小企业”在线学堂
云+社区技术沙龙[第6期]
领取专属 10元无门槛券
手把手带您无忧上云