文字列を \uXXXX 形式の Unicode 列に変換する : Objective-C プログラミング

PROGRAM


文字列を \uXXXX 形式の Unicode 列に変換する

以前に UTF8 データ列を \uXXXX 形式の Unicode に変換する で、UTF-8 形式のバイト列を格納した NSData から \uXXXX 形式の Unicode 文字コード列を取得する方法について記しましたけど、NSString 型のデータなら、もっと簡単に Unicode 文字コード列に変換できることがわかりました。

というのも、NSString* 型の文字列は内部で 2 バイトの Unicode として格納されているため、NSString* が保持している文字列を順に取り出して、それを "\u%04x" という書式で文字列に変換したものを繋げる感じで、簡単に作って行くことが可能です。

NSMutableString* result = [[NSMutableString alloc] init];

 

// 全文字分の処理を行います。

for (NSUInteger i = 0; i < string.length; i++)

{

// 文字を順に取り出します。

unichar code = [string characterAtIndex:i];

 

// 取得できた文字を '\uXXXX' 形式に変換します。

[result appendFormat:@"\\u%04x", code];

}

これで NSMutableString 型の変数 result に、各文字を "\uXXXX" 形式に変換した文字列を取得することが出来ました。

NSData に格納した UTF-8 データ列も、NSString の stringWithData: メソッドを使って簡単に NSString 型に変換できるので、そうしてから上記のコードで Unicode コード列に変換するのがいちばん間違いがないかもしれないですね。

[ もどる ]