2013-07-06 6 views
8

私はこのような文字列を持っている:このフォーマット文字列の何が問題なのですか?

<string name="q_title" formatted="false">Item %d of %d</string> 

私はこのようString.Formatの中でそれを使用しています:

String log = String.format(getString(R.string.q_title), 100, 500); 

これまでのところ、私は出力に問題が認められなかっました。

しかし、AndroidのStudioのコード検査は私を与える:

フォーマット文字列 'q_title' は有効なフォーマット文字列ではありません、それそう は

なぜString.Formatのために渡されるべきではないのですか?まだこの回答をお探しの方に

+0

でSを置き換える([こちら] http://developer.android.com/guide/topics/resources/string-resourceを見てみましょう。 html#FormattingAndStyling) – Blackbelt

+0

二重引用符の前にバックスラッシュを削除するとどうなりますか? – fge

+1

質問を新しい文字列で更新できますか? – Blackbelt

答えて

14

あなたの文字列が

<string name="q_title" formatted="false">Item %1$d of %2$d</string> 

とコード

String log = getString(R.string.q_title, 100, 500); 
する必要があります

複数の引数がある場合は、それらを1 $、2 $ ... n $でマークする必要があります。アラビア語では、順序が逆転しているので、正しく変更する方法を知る必要があります。

getString(id, args...)それ自体でフォーマットを実行します。

2

link that Blackbelt postedが示すように、文字列の正しい形式は次のようになります。

<string name="q_title">Item %1$d of %2$d</string> 
1

は、私が最後にパーセント文字「%」をエスケープするのを忘れたので、私は、この文字列に問題があったすべての特殊文字

を逃れるために注意してください。

<string name="market_variation_formatter">%s %</string> 

良いが文字列だったエスケープ:

<string name="market_variation_formatter">%s \%</string> 
4

%、以下は私のために働きました。

<string name="score_percent">%s%%</string> 


getString(R.string.score_percent,"20") 

あなたが整数を扱っている場合は、D

<string name="score_percent">%d%%</string> 
関連する問題