0

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, thinkada a 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 basic de la cultura de corte.

ロス フォンドス デ ラ レアル ビブリオテカ、デル レアル モナステリオ デ サン ロレンソ デ エル エスコリアル、デル モナステリオ デ サンタ マル\u00c3\u00ada ラ レアル デ ラス ウェルガス デ ブルゴス、デル モナステリオ デ ラス

適切に変換しないと、これらのエスケープされた Unicode ペアは、UIWebView に配置したときに個別の文字として扱われます (各ペアは 2 つの文字を生成します)。

これは、生の JSON データがどのようにコーディングされているかということですが、うまくラテン文字に変換できませんでした。

とにかく、問題はtwoEscapeArray、一致の試行後に配列が nil になることです。理由はわかりません。

4

1 に答える 1