首页 > 解决方案 > 多值字符串格式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 文件”。'/' 之后的空格是问题所在。

您知道解决方案吗?

提前致谢

标签: android

解决方案


问题是您使用的格式 ( %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. $ 符号允许您指定字符串的索引(应该打印字符串的位置,称为“显式参数索引”或“位置参数”。您可以在此处阅读更多内容)。

例如:

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" 

推荐阅读