多个值字符串格式Android

时间:2019-01-17 09:15:58

标签: android

我将显示类似此示例的文本:“ 0/2文档” 我正在尝试使用:

<plurals name="documents_get">
    <item quantity="one">%1d/%2d doucment</item>
    <item quantity="other">%1d/%2d documents</item>
</plurals>

resources.getQuantityString(
                    R.plurals.documents_get,
                    docCount,
                    documents.filter {

                        it.retrieved_at != null

                    }.count(),
                    docCount)

我的问题是结果是:0/ 2 documents而不是“ 0/2 document”。问题是“ /”后的空格。

您知道解决方案吗?

预先感谢

3 个答案:

答案 0 :(得分:1)

问题是您使用的格式(%2d)。因此,将您的复数更改为此:

<plurals name="documents_get">
    <item quantity="one">%d/%d doucment</item>
    <item quantity="other">%d/%d documents</item> 
</plurals>

使用String.format

的示例
String s1 = String.format("%d/%d document", 0, 1); // s1: "0/1 document"
String s2 = String.format("%d/%2d document", 0, 1); // s2: "0/ 1 document"

修改

正如@Kingfisher Phuoc所指出的,它应该是%1$d/%2$d而不是%d。 $符号允许您指定字符串的索引(应该在该位置打印字符串,称为“显式参数索引”或“位置参数”。您可以阅读更多here)。

例如:

String s1 = String.format("%1$d/%2$d", 1, 2); // s1: "1/2" 
String s2 = String.format("%2$d/%1$d", 1, 2); // s2: "2/1" 

答案 1 :(得分:0)

删除(%2d)并替换为(%d),或者可以使用字符串格式

String resource = String.format("%d/%d document", 0, 1); // s1: "0/1 document"

答案 2 :(得分:-2)

您可以像这样

在string.xml中定义您的字符串
<resources>
    <string name="string">0"/"2 documents</string>
</resources>

并通过getResources.getString方法获取它。

注意:特殊字符用双引号引起来。