web-dev-qa-db-ja.com

strings.xmlのパーセント記号

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"は設定しないでください。

27
danijoo

使用する

<?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);
34
Arun C

%の代わりに\%%を試すことができますか?

お気に入り、

<string name="teststring">The new value is \%%</string>

または

<string formatted="false" name="teststring" >The new value is %</string>
5
Basim Sherif

これを試して

<string  name="teststring"> The new value is %1$s %% </string>
5
swetha kini
String value = "25";

String formattedString = "The new value is " + value + (char) 0x0025;

今ならLog.d(TAG、formattedString);ログに記録されます

The new value is 25%
1
Andrey

これをチェックして、

<string name="teststring">The new value is %1$s %%</string>

String value = "25";
String formattedString = this.getResources().getString(R.string.teststring, mPageNumber);
1
Sathish Sathish
<?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);
0
DeepakPanwar

このように使用します:

String str = context.getResources().getString(R.string.teststring);
String formattedString = String.format(str, value);
0
Homam