我正在尝试为 String
类创建一个内部函数,以仅获取字母数字字符并返回一个字符串。关于如何使用 Regex 将匹配项转换回字符串,我遇到了一些错误。谁能告诉我如何修复代码,或者是否有更简单的方法?
我想要这样的东西
let testString = "_<$abc$>_"
let alphaNumericString = testString.alphaNumeric() //abc
到目前为止我有:
extension String {
internal func alphaNumeric() -> String {
let regex = try? NSRegularExpression(pattern: "[^a-z0-9]", options: .caseInsensitive)
let string = self as NSString
let results = regex?.matches(in: self, options: [], range: NSRange(location: 0, length: string.length))
let matches = results.map {
String(self[Range($0.range, in: self)!])
}
return matches.join()
}
}
最佳答案
您可以直接使用 replacingOccurrences
(从输入字符串中删除所有非重叠匹配项)和 [^A-Za-z0-9]+
模式:
let str = "_<$abc$>_"
let pattern = "[^A-Za-z0-9]+"
let result = str.replacingOccurrences(of: pattern, with: "", options: [.regularExpression])
print(result) // => abc
[^A-Za-z0-9]+
模式是一个否定字符类,它匹配除类中定义的字符之外的任何字符,一个或多个出现(由于 +
量词)。
参见 regex demo .
关于Swift - 仅从字符串中获取字母数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52052372/