【问题标题】:NSRegularExpression match is not workingNSRegularExpression 匹配不起作用
【发布时间】:2012-05-02 06:45:05
【问题描述】:

我正在尝试替换 NSString 中的一些转义 unicode。我对 CFString 函数没有任何运气,所以我想我会尝试正则表达式。

这是正则表达式

NSRegularExpression *regexUnicode2 = [NSRegularExpression regularExpressionWithPattern:@"(\\u([0-9A-Fa-f]){4}){2}" options:0 error:&error];

然后我尝试使用这个来匹配

NSArray *twoEscapeArray = [regexUnicode2 matchesInString:selfCopy options:0 range:NSMakeRange(0, self.length)];

selfCopy 是输入字符串的可变副本。这是该字符串的一部分:

muestran al p\u00c3\u00bablico las encuadernaciones de las colecciones reales adem\u00c3\u00a1s de otros objetos hist\u00c3\u00b3ricos en relaci\u00c3\u00b3n con \u00c3\u00a9stas.

La muestra, 考虑一个 nivel mundial como uno de los conjuntos ligatorios hist\u00c3\u00b3ricos m\u00c3\u00a1s importantes, se completa con obras de arte como armas, alfombras y relojes。 Estos son objetos que ayudan a entender la encuadernaci\u00c3\u00b3n como elemento 基层文化。

Los fodos de la Real Biblioteca, del Real Monasterio de San Lorenzo de El Escorial, del Monasterio de Santa Mar\u00c3\u00ada la Real de las Huelgas de Burgos, 拉斯修道院

如果没有适当的转换,当我将这些转义的 unicode 对放入 UIWebView 时,它们将被视为单独的字符(每对产生两个字符)。

这就是原始 JSON 数据的编码方式,我没有运气将其正确转换为拉丁字符。

无论如何,问题在于数组twoEscapeArray 在匹配尝试后为零。我不知道为什么。

【问题讨论】:

    标签: regex nsstring nsregularexpression nsstringencoding


    【解决方案1】:

    您的意思是\u00c3\u00ba 正在转换为ú?这对我来说似乎是正确的行为。真正的问题是那些 Unicode 转义符是如何进入其中的。看起来文本在某些时候被错误解码(可能是在创建 NSString 时?),字母 ú 的两字节 UTF-8 编码应该是什么(U+00FA,拉丁小写字母 U 与Acute) 被解码为两个字符。

    尝试回到创建 NSString 的位置,这次指定 UTF-8 作为编码。

    【讨论】:

    猜你喜欢
    • 2012-02-15
    • 2012-04-24
    • 2014-04-21
    • 2013-11-09
    • 1970-01-01
    • 2012-12-23
    • 2015-10-08
    • 2013-04-24
    相关资源
    最近更新 更多