如何将数据传递给getText?

时间:2014-03-09 15:13:56

标签: android

我有以下字符串资源:

<string name="foo">This is a {0} test. Hello {1}</string>

现在我想在调用时传递值1foo

getResources().getText(R.string.foo)

怎么做到这个?或者是不可能的?

4 个答案:

答案 0 :(得分:3)

getResources().getString(R.string.foo, 1, "foo");但字符串应该使用string format ...所以字符串中的字符串应如下所示:

<string name="foo">This is a %d test. Hello %s</string>

答案 1 :(得分:1)

我不太确定Java内置了类似的内容。我曾经写过一个方法,可以做你正在寻找的确切事情,但是:

public static String format(String str, Object... objects)
{
    String tag = "";

    for (int i = 0; i < objects.length; i++)
    {
        tag = "\\{" + i + "\\}";
        str = str.replaceFirst(tag, objects[i].toString());
    }

    return str;
}

这会格式化字符串,用通过的对象替换'{i}';就像在C#中一样。

示例:

format(getResources().getString(R.string.foo), "cool", "world!");

答案 2 :(得分:1)

你可以这样做:
     string name="foo">This is a %d test. Hello %s string>

    getString(R.string.foo, 1, "foo");

来源:Are parameters in strings.xml possible?

您可以在此处找到有关格式和格式的更多信息:http://developer.android.com/reference/java/util/Formatter.html

答案 3 :(得分:0)

我认为,做你想要的最简单的方法是将你拥有的代码行保存到变量中,然后使用Java String replace()函数。

String fooText = getResources().getText(R.string.foo);
fooText = fooText.replace("{0}", myZeroVar);
fooText = fooText.replace("{1}", myOneVar);