7

我想格式化一个字符串数组,就像android 用来格式化字符串一样:

通常我们这样做:

  • 字符串.xml

    <string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>
    
  • 在一些java代码中:

    Resources res = getResources();
    String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
    

我正在寻找类似的东西:

  • 在一些任意的xml中:

        <string-array name="employee">
            <item>name: %1$s</item>
            <item>post: %2$s</item>
        </string-array>
    
  • 在一些java代码中:

    Resources res = getResources();
    String[] employee = ArrayString.format(res.getStringArray(R.string.employee), name, post);
    

有没有一种优雅的方式来做到这一点?

编辑:

下一段代码是一种解决方法,我发布它只是为了帮助@Sufian,他在评论中要求它。一旦我的问题是关于格式化字符串数组的内容并且下面的代码分别格式化每个字符串,这不是一个真正的答案。

在一些 misc.xml 中:

<string-array
    name="string_array">
    <item>1st position: %1$d</item>
    <item>2nd position: %1$d</item>
</string-array>

然后,在java代码中:

res = getResources();
String[] sa = res.getStringArray(R.array.string_array);
for (int i = 0; i < sa.length; i++ ) {
    text += String.format(sa[i], i);
}
4

2 回答 2

1

只需使用:

String text = String.format(res.getStringArray(R.array.myStringArray)[index], param1, param2);
于 2019-07-10T17:27:19.023 回答
0

getQuantityString 可能会解决您的问题。

查看http://developer.android.com/guide/topics/resources/string-resource.html中的数量字符串

这是特定的 API 文档: http: //developer.android.com/reference/android/content/res/Resources.html#getQuantityString(int,%20int,%20java.lang.Object...)

于 2013-04-17T13:07:08.100 回答