我试图转换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)?
但这不能正常工作?任何想法
答案 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: "")