Swift中如何移除Unicode U+2018左单引号并替换对应字符
解决Unicode左单引号替换问题
我来帮你搞定这个问题~你之前用的folding方法没生效是有原因的:.diacriticInsensitive这个选项主要是用来处理变音标记(比如重音符、鼻音符号这类附着在字母上的标记),而U+2018是独立的标点字符,不属于变音标记范畴,所以这个方法对它完全不起作用。
针对你的需求——移除左单引号,同时把‘A、‘a、‘U、‘u直接替换成对应的字母,这里有个简单可行的Swift解决方案:
let originalString = "Ghulam ‘Ali, ‘Ali Khel,‘Ali Sher ‘Alaqahdari" // 第一步:替换‘A/‘a/‘U/‘u为对应的字母 var processedString = originalString.replacingOccurrences( of: "‘([AaUu])", with: "$1", options: .regularExpression ) // 第二步:移除所有剩余的独立左单引号 processedString = processedString.replacingOccurrences(of: "‘", with: "") print(processedString) // 输出结果:Ghulam Ali, Ali Khel,Ali Sher Alaqahdari
代码说明:
- 第一行正则
‘([AaUu])会精准匹配左单引号加上目标字母的组合,用$1引用捕获到的字母,直接替换掉整个带引号的组合; - 第二步处理那些单独存在的左单引号(比如
‘Ali Khel里的单引号),直接替换为空字符串完成移除。
如果你的场景里还有其他类似带引号的字母需要处理,只需要扩展正则里的字符范围就可以啦~
内容的提问来源于stack exchange,提问作者Y.R
相关产品推荐
相关产品推荐

