此格式字符串有什么问题?

2022-09-03 04:01:25

我有一个这样的字符串:

<string name="q_title" formatted="false">Item %d of %d</string>

我以String.format使用它,如下所示:

String log = String.format(getString(R.string.q_title), 100, 500);

到目前为止,我还没有观察到输出有任何问题。

但是,Android Studio中的代码检查给了我:

格式字符串“q_title”不是有效的格式字符串,因此不应将其传递给 String.format

为什么?


答案 1

您的字符串应该是

<string name="q_title" formatted="false">Item %1$d of %2$d</string>

和代码

String log = getString(R.string.q_title, 100, 500);

当您有多个参数时,您需要用1 $,2 $...n$.在阿拉伯朗斯,顺序是颠倒的,所以他们需要知道如何正确地改变它。

getString(id, args...)执行格式本身。


答案 2

对于百分比,以下内容对我有用。

<string name="score_percent">%s%%</string>


getString(R.string.score_percent,"20")

如果您正在处理整数,请将 s 替换为 d

<string name="score_percent">%d%%</string>