私は現在、「U + 0008」のような文字列としてUTF-8文字の入力を受け取るObjective Cプログラムを開発しています。これらの文字列は NSString 型です。次に、この文字を表すこの文字列を、対応する UniChar (0x0008) に変換する必要があります。
これを行うエレガントな方法を知っていますか?
ありがとう!ペドロ
私は現在、「U + 0008」のような文字列としてUTF-8文字の入力を受け取るObjective Cプログラムを開発しています。これらの文字列は NSString 型です。次に、この文字を表すこの文字列を、対応する UniChar (0x0008) に変換する必要があります。
これを行うエレガントな方法を知っていますか?
ありがとう!ペドロ
xが 16 進数でNSString
ある形式の@"U+xxxx"
がある場合、値を取得する 2 つの方法を以下に示します。それぞれの「優雅さ」は見る人の目にあります。
a) を使用しNSScanner
ます。メソッドscanString:intoString
を使用して をチェックし、U+
メソッドを使用scanHexInt:
して 16 進値を読み込み、メソッドisAtEnd
を使用して 16 進値の後に何も残っていないことを確認できます。このメソッドは、16 進数を最大 4 桁に制限しません。
b)sscanf
またはを使用しstrtol
ます。NSString
これらは C レベルの API です。使用してから C 文字列を取得できますUTF8String
。をscanf
チェックしてU+
、1行に設定された最大桁数で16進数を読み取ることができます-それが「エレガント」の定義である場合。ただし、すべての入力が消費されていることを確認するには、少し考える必要があります。
これを行う方法は他にもたくさんあります。自分で作成する方法から、正規表現 ( NSRegularExpression
) を使用して形式をチェックし、4 つの 16 進数を一度に抽出して整数に変換する方法まで、さまざまな方法があります。
4 つの 16 進数が表示されている場合は、16 ビットの値であり、UTF-8 よりも UTF-16 に近いことに注意してください。