String.xmlから文字列をフォーマットして、いくつかの値で再利用しようとしています。文字列にはフォーマッタで使用されるパーセント記号も含まれている必要があるため、いくつかの問題が発生しています。私はすでに%記号をそのユニコード表示に置き換えようとしましたが、それは機能しないようです:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="teststring">The new value is %1$s%</string>
<string name="teststring2">The new value is %1$s\u0025</string>
<string name="teststring3">The new value is %1$s</string>
</resources>
Javaコード:
String value = "25";
String formattedString = context.getResources().getString(R.string.teststring), value);
この例では。 teststringとteststring2はエラーを生成しますが、teststring3は正常に機能します。その%記号をxml-stringに入れて、フォーマットされた文字列として「新しい値は25%」を取得する正しい方法は何ですか?
ご協力いただきありがとうございます。
スタックトレース:
FATAL EXCEPTION: main
Java.util.UnknownFormatConversionException: Conversion:
at Java.util.Formatter$FormatSpecifierParser.unknownFormatConversionException(Formatter.Java:2304)
at Java.util.Formatter$FormatSpecifierParser.advance(Formatter.Java:2298)
at Java.util.Formatter$FormatSpecifierParser.parseConversionType(Formatter.Java:2377)
at Java.util.Formatter$FormatSpecifierParser.parseArgumentIndexAndFlags(Formatter.Java:2348)
at Java.util.Formatter$FormatSpecifierParser.parseFormatToken(Formatter.Java:2281)
at Java.util.Formatter.doFormat(Formatter.Java:1069)
at Java.util.Formatter.format(Formatter.Java:1040)
at Java.util.Formatter.format(Formatter.Java:1009)
at Java.lang.String.format(String.Java:1988)
at Android.content.res.Resources.getString(Resources.Java:343)
at (... and so on)
-編集-ヘルプをありがとう。正解は
<string name="teststring">The new value if %1$s%%</string>
formated = "false"は設定しないでください。
使用する
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="teststring">The new value is %1$s%%</string>
</resources>
Javaの場合
String value = "25";
String formattedString =
String.format(getResources().getString(R.string.teststring), value);
Log.i("",formattedString);
%の代わりに\%%
を試すことができますか?
お気に入り、
<string name="teststring">The new value is \%%</string>
または
<string formatted="false" name="teststring" >The new value is %</string>
これを試して
<string name="teststring"> The new value is %1$s %% </string>
String value = "25";
String formattedString = "The new value is " + value + (char) 0x0025;
今ならLog.d(TAG、formattedString);ログに記録されます
The new value is 25%
これをチェックして、
<string name="teststring">The new value is %1$s %%</string>
String value = "25";
String formattedString = this.getResources().getString(R.string.teststring, mPageNumber);
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="offerString">The new value is %1$s%% %2$s</string>
</resources>
String offerOnHdfc = "25";
String formattedString = String.format(getResources().getString(R.string.offerString), offerOnHdfc);
Log.i("",formattedString);
このように使用します:
String str = context.getResources().getString(R.string.teststring);
String formattedString = String.format(str, value);