swift - 在 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"
解决方案
您可以使用
return word.replacingOccurrences(of: "\\W+", with: "", options: .regularExpression)
请注意在方法options: .regularExpression
中实际启用基于正则表达式的搜索的参数.replacingOccurrences
。
你的模式是[^\w]
。它是一个否定字符类,匹配除单词 char 之外的任何字符。所以,它等于\W
。
是正/.../
则表达式分隔符。在 Swift 正则表达式中,它们被解析为文字正斜杠,因此您的模式不起作用。
这g
是一个“全局”修饰符,它让正则表达式引擎匹配多个匹配项,但它仅在支持它的情况下工作(例如在 JavaScript 中)。由于 Swift 正则表达式不支持正则表达式分隔符,因此正则表达式引擎知道如何通过.replacingOccurrences
方法定义进行操作:
返回一个新字符串,其中接收器中所有出现的目标字符串都被另一个给定的字符串替换。
如果您需要检查 ICU 正则表达式语法,请考虑参考ICU 用户指南>正则表达式,它是 Swift/Objective-C 中使用的正则表达式库。
推荐阅读
- algorithm - 获取最接近的 k 个项目的最有效实现
- javascript - 如何在我的 Angular 4.x 项目中使用 js 库作为模块?
- asp.net-web-api - 如何在 asp.net web api 项目中实现 soa 概念?
- apache-spark - 为什么persist(StorageLevel.MEMORY_AND_DISK) 给出的结果与使用HBase 的cache() 不同?
- react-native - 为什么显示红色偶数代码是正确的?
- python - 查找模式的所有匹配项并在文本文件中替换它们
- c# - 为什么我的数据绑定对 PropertyChange 没有反应?
- javascript - jQuery评论系统不工作
- reactjs - 删除一个使用 react-select 模块呈现的选择框
- python-3.x - Python3 中的 print() 是原子的吗?