📜  swift string 只保留数字 - Swift (1)

📅  最后修改于: 2023-12-03 15:35:12.454000             🧑  作者: Mango

Swift String 只保留数字

在 Swift 中,我们经常需要处理字符串,包括仅保留字符串中的数字。这种场景在计算机科学中非常常见,例如从字符串中提取电话号码或信用卡号码。

这里提供两种方法来实现在 Swift 中,只保留字符串中的数字。

方法 1:使用正则表达式过滤非数字字符

第一种方法是使用正则表达式来过滤字符串中非数字字符,只保留数字。在 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 中所有匹配的非数字字符为空字符串。
方法 2:使用字符过滤器保留数字字符

另一种方法是使用字符过滤器来保留字符串中的数字字符,过滤掉其他字符。在 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 中,只保留字符串中的数字。根据具体场景和需求,选择合适的方法实现即可。