首页 > 解决方案 > 在 Swift 中使用正则表达式

问题描述

我正在尝试替换 Swift 中字符串中所有空格和特殊字符的出现。

我不知道 Swift 中的 RegEx 是什么。

我正在尝试使用内置函数 .replacingOccurences(of:) 并将我的 RegEx 作为字符串协议传递,而代码编译时,没有进行任何更改。

网上有很多关于如何在 Swift 中替换事件的资源,但是解决方案远比看起来需要的复杂得多。

如何正确返回此输出(当前策略):

let word = "Hello World!!"
func regEx(word: String) -> String {
   return word.replacingOccurrences(of: "/[^\\w]/g", with: "")
}
// return --> "HelloWorld"

标签: swiftregexstring

解决方案


您可以使用

return word.replacingOccurrences(of: "\\W+", with: "", options: .regularExpression)

请注意在方法options: .regularExpression中实际启用基于正则表达式的搜索的参数.replacingOccurrences

你的模式是[^\w]。它是一个否定字符类,匹配除单词 char 之外的任何字符。所以,它等于\W

是正/.../则表达式分隔符。在 Swift 正则表达式中,它们被解析为文字正斜杠,因此您的模式不起作用。

g是一个“全局”修饰符,它让正则表达式引擎匹配多个匹配项,但它仅在支持它的情况下工作(例如在 JavaScript 中)。由于 Swift 正则表达式不支持正则表达式分隔符,因此正则表达式引擎知道如何通过.replacingOccurrences方法定义进行操作:

返回一个新字符串,其中接收器中所有出现的目标字符串都被另一个给定的字符串替换。

如果您需要检查 ICU 正则表达式语法,请考虑参考ICU 用户指南>正则表达式,它是 Swift/Objective-C 中使用的正则表达式库。


推荐阅读