Objective-Cでのテキストフォーマット引数あれこれ
先日のiPhoneアプリ開発勉強会にて、MonoTouchでの発表の中に
テキストフォーマッティング
という説明がありました。*1
これは、テキストに引数を埋め込む際に、引数の順番を任意にできるというもの…
発表スライドではこのような例が。
int all = 10;
int count = 3;String.Format("{0}回中の{1}回", all, count);
String.Format("{1} times in {0}", all, count);
文章表現の内容によっては、日本語と英語で順番が変わる場合があるので、これができるとローカライズ処理がとっても便利になるのです…!
いいなぁ…Objective-Cにも欲しかったよ…こんな機能…
あったwww
Objective-Cにもありましたわw
[iPhone] Localized 時の小技 | Sun Limited Mt.
n$(nは整数)で解決!
サンプルです。
NSString *str1 = @"お";
NSString *str2 = @"お";
NSString *str3 = @"た";
NSString *str4 = @"け";
NSString *str5 = @"し";
NSString *str6 = @"の";
NSString *str7 = @"ぶ";NSLog(@"%1$@ %2$@ %3$@ %4$@ %5$@ %6$@ %7$@", str1, str2, str3, str4, str5, str6, str7);
NSLog(@"%7$@ %3$@ %6$@ %4$@ %1$@ %2$@ %5$@", str1, str2, str3, str4, str5, str6, str7);
それぞれ
「お お た け し の ぶ」
「ぶ た の け お お し」
と表示されます。
また、引数は複数回指定することも可能で
NSLog(@"%5@ %1$@ %7$@ %3$@ %6$@ %4$@ %1$@ %2$@ %5$@", str1, str2, str3, str4, str5, str6, str7);
とすると
「し お ぶ た の け お お し」
と表示されます。
これでObjective-Cでのローカライズ処理も安心ですね!
…えっ?
とスンナリいかないのがiPhoneアプリ開発…。
今回もありました…とはいえ些細なことですけども。
例えば
NSLog(@"%7$@ %3$@ %6$@ %4$@ %1$@ %2$@", str1, str2, str3, str4, str5, str6, str7);
とすると、表示して欲しい結果は
「ぶ た の け お お」
なのですが、私の開発環境では
「の た し け お お」
という謎の結果に…
これは、テキストフォーマット時に使用しない引数があると起こるようです。
上記だとstr5を使用していませんね。
気をつけましょう…引数は使い切る!ということで。
*1:hIDDEN bLOG » iPhoneアプリ開発勉強会 2010/9/3 in 福井高専に表示されているスライド37ページ目にあります。