strings.xml中的百分比符号

我试图从string.xml格式化一个string以重复使用多个值。 我遇到了一些问题,因为string也应该包含格式化程序使用的百分比符号。 我已经试图用unicode表示来replace%符号,但是这似乎不起作用:

<?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工作正常。 什么是正确的方法来把这个%符号在xmlstring中得到“新值是25%”作为格式化的string?

谢谢你的帮助。

堆栈跟踪:

 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) 

– EDIT – 感谢您的帮助。 正确的答案是

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

不得设置formatted =“false”。

Solutions Collecting From Web of "strings.xml中的百分比符号"

使用

 <?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); 它会logging

 The new value is 25% 

像这样使用:

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

检查这一个,

 <string name="teststring">The new value is %1$s %%</string> String value = "25"; String formattedString = this.getResources().getString(R.string.teststring, mPageNumber);