[解決済み] NSString stringWithFormatで、引数の位置/インデックスを指定する方法はありますか?
2023-06-11 07:58:29
質問
C#には、文字列の書式指定子で引数のインデックスを指定する構文がありますが、例えば。
string message = string.Format("Hello, {0}. You are {1} years old. How does it feel to be {1}?", name, age);
引数は複数回使用することができ、また、提供された引数は使用しないように省略することができます。
別の質問
は、C/C++のための同じフォーマットについて言及しており、その形式は
%[index]$[format]
のような形で、例えば
%1$i
. 私は、NSString を
完全に
はこの構文を尊重していません。
引数を省略する
を省略したときにうまく動作するからです。以下は期待通りに動作しません(EXC_BAD_ACCESS。
age
パラメータをNSObject*として参照しようとするため、EX_BAD_ACCESS)。
int age = 23;
NSString * name = @"Joe";
NSString * message = [NSString stringWithFormat:@"Age: %2$i", name, age];
位置引数は、フォーマットから欠落した引数がない場合にのみ尊重されます(これは奇妙な要求のように思われます)。
NSString * message = [NSString stringWithFormat:@"Age: %2$i; Name: %1$@", name, age];
これらの呼び出しはすべてOS Xで正しく動作します。
printf("Age: %2$i", [name UTF8String], age);
printf("Age: %2$i %1$s", [name UTF8String], age);
Objective-C / CocoaでNSStringを使って実現する方法はないでしょうか?ローカライズの際に役立つと思います。
どのように解決するのですか?
NSStringとCFStringは、並び替え可能な/位置のある引数をサポートしています。
NSString *string = [NSString stringWithFormat: @"Second arg: %2$@, First arg %1$@", @"<1111>", @"<22222>"];
NSLog(@"String = %@", string);
また、以下のドキュメントを参照してください。 Apple を参照してください。文字列リソース
関連
-
[解決済み] 現在の日付から7日分を差し引いた日数
-
[解決済み] NSPredicate: NSDateプロパティの日によるオブジェクトのフィルタリング
-
[解決済み] ARCで__autoreleasing ownership修飾子を記述する必要があるのは、どのような場合ですか?
-
[解決済み] NSArrayのディープコピー
-
[解決済み] メソッドが存在するかどうかをチェックする
-
[解決済み] Info.plistのCFBundleVersionのアップロードエラー
-
[解決済み] NSNumberのインクリメント方法
-
[解決済み] Objective-Cでnilにメッセージを送信する
-
[解決済み] ARCはディスパッチキューをサポートしていますか?
-
[解決済み] Objective-CのクラスからSwiftの関数を呼び出す
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Objective-Cのクラス→文字列のようなものです。[NSArray className] -> @"NSArray" のようになります。
-
[解決済み] iOSの合成されたプロパティの名前を、先頭のアンダースコアで変更するのはなぜですか?重複
-
[解決済み] iOSのBackground Threadの起動
-
[解決済み] Objective-Cでnilにメッセージを送信する
-
[解決済み] iOS - プログラムでUISwitchを設定する方法
-
[解決済み] Objective-Cです。NSNotificationのオブザーバを削除するには?
-
[解決済み] NSSetからNSMutableArrayを返す方法
-
[解決済み] MKMapViewのアノテーションをすべて削除する方法
-
[解決済み] iOS8 - 高さがゼロであることを示唆する曖昧な制約
-
[解決済み] Xcode リンカエラー: file too small for architecture x86_64