我正在尝试格式化 string.xml 中的字符串以将其与多个值一起重用。我遇到了一些问题,因为字符串还应该包含格式化程序使用的百分比符号。我已经尝试用 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>
Java代码:
String value = "25";
String formattedString = context.getResources().getString(R.string.teststring), value);
在这个例子中,teststring
and teststring2
会产生错误,同时teststring3
工作正常。将 % 符号放入 xml 字符串中以获取“新值为 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>
不得设置 formatted="false"。
Use
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="teststring">The new value is %1$s%%</string>
</resources>
In java
String value = "25";
String formattedString =
String.format(getResources().getString(R.string.teststring), value);
Log.i("",formattedString);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)