gpt4 book ai didi

ios - Swift 正则表达式匹配 unicode

转载 作者:行者123 更新时间:2023-11-28 11:04:54 26 4
gpt4 key购买 nike

我是 swift 的新手,想使用正则表达式匹配所有 unicode 字符串

例如:var s="😀表情符号😀"当我解码上面的字符串时,结果是:“\ud83d\ude00 表情符号\ud83d\ude00

我想用 say * 替换每个表情符号

在 java 中,我将正则表达式用作:“[\uD800-\uDBFF\uDC00-\uDFFF]”并且正在工作

在 swift 中,我使用了相同的正则表达式,但它用 * 替换了每个字符

我希望结果为 * 表情符号 *

非常感谢您的帮助

最佳答案

您显示的表情符号的 Unicode 代码点是 U+1F600。

( Unicode 9.0 Character Code Charts - Emoticons )

并且您的正则表达式模式(可能适用于 UTF-16 表示)[\uD800-\uDBFF\uDC00-\uDFFF] 匹配所有非 BMP 字符 -- U+10000... U+10FFFF,其中包含大部分表情符号,但也包含大量非表情符号字符。

因此,正如您所说的“[\uD800-\uDBFF\uDC00-\uDFFF]”有效,NSRegularExpression 中的等效模式是 [\\U00010000-\\U0010FFFF ]".

var s="😀 emoji 😀"
let regex = try! NSRegularExpression(pattern: "[\\U00010000-\\U0010FFFF]", options: [])
let replaced = regex.stringByReplacingMatchesInString(s, options: [], range: NSRange(0..<s.utf16.count), withTemplate: "*") //->"* emoji *"

(添加)要查看字符串文字中的 Unicode 代码点:

s.unicodeScalars.forEach {
print(String(format: "U+%04X ", Int($0.value)))
}

对于您的示例字符串,我得到:

U+1F600 
U+0020
U+0065
U+006D
U+006F
U+006A
U+0069
U+0020
U+1F600

关于ios - Swift 正则表达式匹配 unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38408645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com