我在 string.xml 中使用占位符 %1$d 作为 int
值,然后我想在相同的 TextView
中显示 %
登录> 所以它是 %
。所以我一直这样使用它。
<string name="uploadProgress">%1$d%<string>
现在在 Java 代码中我是这样使用它的。
int progress = 10;
textView.setText(String.format(getString(R.string.uploadProgress), progress));
但它显示:
java.util.UnknownFormatConversionException: Conversion:
我试过:
%
而不是%
- 在
%1$d
和%
之间放一个空格(但我不想要空格 实际上。)
但运气不好。我怎样才能做到这一点?我已经查看了另一个 SO 问题以寻求解决方案,但我找不到特定的问题。
最佳答案
我也遇到过。有两种方法可以转义 XML 字符串资源中的文字百分号。
对于您的情况(带参数的字符串,例如 %1$d
),您应该使用 %%
来转义百分号文字。
如果您的字符串没有参数,那么您应该使用 \u0025
来转义百分号。
如果您在不带参数的字符串中使用%%
,那么getString()
会将其解析为文字%%
而不是转义它。如果您在字符串中使用 \u0025
和 参数,则 getString()
将在尝试处理该 %
时崩溃作为格式参数。
关于java - 在 string.xml 中将占位符与 % 符号一起用于 String.format(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38466008/