NSStringビルドされた with内のメンバーの範囲を取得したい+[NSString stringWithFormat:]。Objective-C フォーマット文字列を解析する最良の方法は何ですか? のため、C 形式の文字列パーサーだけを使用することはできません%@。また、フォーマット順序をサポートしていることも確認する必要があります: %1$d、%2$@など。
たとえば、 で構築された文字列では[NSString stringWithFormat:@"foo %2$@ bar %1$@", @"Heath", @"Borders"]、理想的には次のようになりNSArrayます@[NSMakeRange(15, 5), NSMakeRange(4, 6)]。最初の配列オブジェクトはフォーマット文字列の最初のデータ要素に対応し、2 番目の配列オブジェクトは 2 番目のデータ要素などに対応します。
この場合、API は次のようになります。 と同じように+ (NSString *) stringWithFormatRanges:(NSArray **)outFormatRanges withFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);を返しますが、各フォーマット データ要素のwithも返します。NSString+[NSString stringWithFormat:]NSArrayNSRange
- 編集 -
この質問は 3 年前のものなので、現時点では C のみの実装に満足しています。