strings.xml中的百分比符号

dan*_*joo 25 xml string format android

我试图从string.xml格式化一个字符串,以重用它与几个值.我遇到了一些问题,因为String还应该包含格式化程序使用的百分比符号.我已经尝试用它的unicode表示替换%符号,但这似乎不起作用:

<?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>
Run Code Online (Sandbox Code Playgroud)

Java代码:

String value = "25";
String formattedString = context.getResources().getString(R.string.teststring), value);
Run Code Online (Sandbox Code Playgroud)

在这个例子中.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)
Run Code Online (Sandbox Code Playgroud)

--EDIT--感谢您的帮助.正确的答案是

<string name="teststring">The new value if %1$s%%</string>
Run Code Online (Sandbox Code Playgroud)

不得设置formatted ="false".

Aru*_*n C 37

使用

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="teststring">The new value is %1$s%%</string>

</resources>
Run Code Online (Sandbox Code Playgroud)

在java中

String value = "25";
String formattedString =
    String.format(getResources().getString(R.string.teststring), value);
Log.i("",formattedString);
Run Code Online (Sandbox Code Playgroud)


Bas*_*rif 6

您可以\%%代替%吗?

喜欢,

<string name="teststring">The new value is \%%</string>
Run Code Online (Sandbox Code Playgroud)

要么

<string formatted="false" name="teststring" >The new value is %</string>
Run Code Online (Sandbox Code Playgroud)


swe*_*ini 6

试试这个

<string  name="teststring"> The new value is %1$s %% </string>
Run Code Online (Sandbox Code Playgroud)