java - 在 string.xml 中将占位符与 % 符号一起用于 String.format()

标签 java android xml string string-formatting

我在 string.xml 中使用占位符 %1$d 作为 int 值,然后我想在相同的 TextView 中显示 % 登录> 所以它是 %。所以我一直这样使用它。

<string name="uploadProgress">%1$d&#37;<string>

现在在 Java 代码中我是这样使用它的。

int progress = 10;
textView.setText(String.format(getString(R.string.uploadProgress), progress));

但它显示:

java.util.UnknownFormatConversionException: Conversion:

我试过:

  1. % 而不是 %
  2. %1$d% 之间放一个空格(但我不想要空格 实际上。)

但运气不好。我怎样才能做到这一点?我已经查看了另一个 SO 问题以寻求解决方案,但我找不到特定的问题。

最佳答案

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

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

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

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

关于java - 在 string.xml 中将占位符与 % 符号一起用于 String.format(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38466008/

相关文章:

java - 空标签的 XML 验证

java - 我应该如何实现一个包含需要以不同语言显示的项目列表的下拉框?

java - 语法错误以及为什么会出现这些错误?

android - 如何混合 android.support.v4.app.Fragment 和 android.app.Fragment

iphone - 将具有大量子节点的 XML 解析为 UITableView

Python xml解析etree按位置查找元素X

java - 顺序异步任务,其中每个后续使用都来自前一个

java - 如何在 AWS 上运行 Spark Java 应用程序?

Android onClick 不适用于某些 Android 版本

java - 从数据库获取信息