如何在swift 3中替换多个字符

时间:2017-01-08 16:45:34

标签: swift

我试图转换Xcode无法转换为Swift3的代码部分

在swift 2.3中替换我使用的字符串中的多个字符:

var phone = "+ 1 (408)-456-1234"
phone = phone.replaceCharacters("  ) ( -   ‑", toSeparator: "")

这应该给 +14084561234

在swift 3中,我使用了这个:

phone = phone.replacingOccurrences(of: " |(|)|-", with: "z",options: .regularExpression)

此代码提供 +1(408)4561234

如何替换字符串中的多个字符(Swift3)?

但这不能正常工作?任何想法

3 个答案:

答案 0 :(得分:8)

您必须修复正则表达式才能创建一组要删除的字符,例如:

var phone = "+ 1 (408)-456-1234"
phone = phone.replacingOccurrences(of: "[ |()-]", with: "", options: [.regularExpression])
print(phone) // +14084561234

但更好的解决方案是创建一组要保留的字符并删除所有其他字符:

phone = phone.replacingOccurrences(of: "[^\\d+]", with: "", options: [.regularExpression])

答案 1 :(得分:3)

正则表达式中的括号表示组。换句话说,他们必须逃脱:

var phone = "+ 1 (408)-456-1234" 
phone = phone.replacingOccurrences(of: " |\\(|\\)|-", with: "",options: .regularExpression)
// "+14084561234"

但它可以通过枚举字符来简化:

var phone = "+ 1 (408)-456-1234" 
phone = phone.replacingOccurrences(of: "[-() ]", with: "",options: .regularExpression)
// "+14084561234"

答案 2 :(得分:0)

快捷键5

var phone = "+ 1 (408)-456-1234"
let characterSet = CharacterSet(charactersIn: " )(-‑")
phone = phone.components(separatedBy: characterSet).joined(separator: "")