2012-11-30 3 views
9

私の古いコードをnslocalizedstringは、表示するためにNSLocalizedStringを使用するoutputTextは単一の出力のセッションで多くのそのような行が含まれていNSMutableStringあったところ、以下:nsattributedstringを使用して

[outputText appendFormat: NSLocalizedString(@"\n\n%@ and %@ are identical. No comparison required.", @"\n\n%@ and %@ are identical. No comparison required."), self.ipAddress, secAddress.ipAddress]; 

私は様々の色を変更しようとしていますipAddress文字列ですが、NSMutableAttributedStringを使用しているときに同様のメソッドを見つけることができません。

私が直面している最大の問題は、この文字列全体がローカライズされるため、フォーマットされた出力の各部分を分割することなくNSRangeを確実に設定できないことです。

この文字列の各部分を分解し、NSAttributedStringに変換し、各部分をoutputTextに追加する必要がありますか?

+1

私はあなたが非常に簡単にそれを正規表現することができると想像しています。数字は実際にはアラビア数字の書式からは変わっていません。 – CodaFi

+0

ええ - そうです。私はBGPを終えた後、正規表現をブロックしました。 リアリティチェックありがとうございます! – Mickey

+0

'rangeOfString:'を使うと、挿入した文字列を挿入した後の範囲を取得できます。 https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/occ/instm/NSString/rangeOfString: – Greg

答えて

3

答えは:はい。

はい、異なる属性を持つセクションを別々にローカライズする必要があります。

+1

しかし、それは例えば、 ''(%1 $ @、%2 $ @) "'のように、ローカライズされた文字列内でパラメータの順序が逆になるユースケースを考慮してください。そのため、 ' - (id)initWithFormat:...'メソッドは 'NSAttributedString'クラスではうまくいくでしょう、そう思わないのですか? – dulaccc

関連する問題