在 string.xml 中为 String.format() 使用带有 % 符号的占位符
Use Placeholder with % sign in string.xml for String.format()
我在 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
和%
之间放一个Space(但我不想space
实际上。)
但运气不好。我怎样才能做到这一点?我已经查看了另一个 SO 问题以寻求解决方案,但我找不到特定的问题。
我也 运行 喜欢这个。有两种方法可以转义 XML 字符串资源中的文字百分号。
对于您的情况(带参数的字符串,例如 %1$d
),您应该使用 %%
来转义百分号文字。
如果您的字符串没有参数,那么您应该使用 \u0025
来转义百分号。
如果您在不带参数的字符串中使用 %%
,那么 getString()
会将其解析为文字 %%
而不是转义它。如果您在字符串 中使用 \u0025
和 参数,那么 getString()
会在尝试将 %
视为格式参数时崩溃。
如果您的字符串资源没有参数,那么您可以使用 formatted="false" 属性。
在你的情况下你需要使用双%
我在 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
和%
之间放一个Space(但我不想space 实际上。)
但运气不好。我怎样才能做到这一点?我已经查看了另一个 SO 问题以寻求解决方案,但我找不到特定的问题。
我也 运行 喜欢这个。有两种方法可以转义 XML 字符串资源中的文字百分号。
对于您的情况(带参数的字符串,例如 %1$d
),您应该使用 %%
来转义百分号文字。
如果您的字符串没有参数,那么您应该使用 \u0025
来转义百分号。
如果您在不带参数的字符串中使用 %%
,那么 getString()
会将其解析为文字 %%
而不是转义它。如果您在字符串 中使用 \u0025
和 参数,那么 getString()
会在尝试将 %
视为格式参数时崩溃。
如果您的字符串资源没有参数,那么您可以使用 formatted="false" 属性。
在你的情况下你需要使用双%