在string.xml中使用带有%符号的占位符表示String.format()

Gre*_*OBO 5 java xml string android string-formatting

我在string.xml中使用占位符%1 $ d作为int值,然后我想显示%相同的符号,TextView这样就可以了%.所以我就这样使用它.

<string name="uploadProgress">%1$d&#37;<string>
Run Code Online (Sandbox Code Playgroud)

现在在Java Code我就这样使用它.

int progress = 10;
textView.setText(String.format(getString(R.string.uploadProgress), progress));
Run Code Online (Sandbox Code Playgroud)

但它显示:

java.util.UnknownFormatConversionException:转换:

我试过:

  1. % 代替 &#37;
  2. %1$d和之间放一个空格&#37;(但我实际上并不想要空间.)

但没有运气.我怎样才能做到这一点?我已经看了另外一些SO解决问题,但我找不到特别的问题.

kco*_*ock 6

我也遇到过这种情况.有两种方法可以转义XML字符串资源中的文字百分比符号.

对于您的情况(例如,带参数的字符串%1$d),您应该使用它%%来转义百分比符号文字.

如果您的字符串没有参数,那么您应该使用\u0025转义文字百分比符号.

如果%%在没有参数的字符串中使用,getString()则将其解析为文字%%而不是转义它.如果您\u0025带有参数的字符串中使用,那么getString()将尝试将其%视为格式参数时崩溃.