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

如何替换swift 3中的多个字符,swift,Swift,我正在尝试将Xcode无法转换为Swift3的部分代码转换为Swift3 在swift 2.3中,要替换我使用的字符串中的多个字符,请执行以下操作: var phone = "+ 1 (408)-456-1234" phone = phone.replaceCharacters(" ) ( - ‑", toSeparator: "") 这将给出+14084561234 在swift 3中,我使用的是: phone = phone.replacingOccurrences(of: " |(

我正在尝试将Xcode无法转换为Swift3的部分代码转换为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)


但这不正常吗?任何想法

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

var phone = "+ 1 (408)-456-1234"
phone = phone.replacingOccurrences(of: "[ |()-]", with: "", options: [.regularExpression])
print(phone) // +14084561234
但更好的解决方案是创建一组要保留的字符,并删除所有其他字符:

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

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

var phone = "+ 1 (408)-456-1234"
phone = phone.replacingOccurrences(of: "[ |()-]", with: "", options: [.regularExpression])
print(phone) // +14084561234
但更好的解决方案是创建一组要保留的字符,并删除所有其他字符:

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

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

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"

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

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"

Swift 5

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

Swift 5

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

你能描述一下你到底想做什么吗?很明显,您的Swift 3代码没有包含有效的正则表达式。我想这很清楚。你能描述一下你到底想做什么吗?很明显,您的Swift 3代码没有包含有效的正则表达式。我想这很清楚。更新后