📅  最后修改于: 2023-12-03 15:35:12.454000             🧑  作者: Mango
在 Swift 中,我们经常需要处理字符串,包括仅保留字符串中的数字。这种场景在计算机科学中非常常见,例如从字符串中提取电话号码或信用卡号码。
这里提供两种方法来实现在 Swift 中,只保留字符串中的数字。
第一种方法是使用正则表达式来过滤字符串中非数字字符,只保留数字。在 Swift 中,我们可以使用内置的 RegularExpression
类来创建和匹配正则表达式:
// 示例字符串
let str = "Hello123World456!"
// 创建正则表达式:匹配非数字字符
let nonNumericRegex = try! NSRegularExpression(pattern: "[^0-9]+", options: [])
// 替换非数字字符为空字符串
let numericStr = nonNumericRegex.stringByReplacingMatches(in: str, options: [], range: NSRange(location: 0, length: str.utf16.count), withTemplate: "")
print(numericStr) // "123456"
代码解释:
str
是示例字符串,包含数字和非数字字符。nonNumericRegex
是创建的正则表达式,用于匹配非数字字符。这里使用了 [^0-9]
来匹配非数字字符,+
表示匹配一个或多个。numericStr
是过滤掉非数字字符后的结果字符串,使用 nonNumericRegex
替换 str
中所有匹配的非数字字符为空字符串。另一种方法是使用字符过滤器来保留字符串中的数字字符,过滤掉其他字符。在 Swift 中,我们可以使用内置的 CharacterSet
类来创建和匹配字符过滤器:
// 示例字符串
let str = "Hello123World456!"
// 创建字符过滤器:保留数字字符
let numericCharSet = CharacterSet.decimalDigits
// 过滤字符串中的其他字符
let numericStr = str.utf16.filter { numericCharSet.contains(UnicodeScalar($0)!) }.map { String(Character(UnicodeScalar($0)!)) }.joined()
print(numericStr) // "123456"
代码解释:
str
是示例字符串,包含数字和非数字字符。numericCharSet
是创建的字符过滤器,用于保留数字字符。numericStr
是过滤掉其他字符后的结果字符串,使用 numericCharSet
过滤 str
中所有不在字符集合中的字符,并转换为字符串。以上两种方法均可以实现在 Swift 中,只保留字符串中的数字。根据具体场景和需求,选择合适的方法实现即可。