我有以下字符串资源:
<string name="foo">This is a {0} test. Hello {1}</string>
现在我想在调用时传递值1
和foo
:
getResources().getText(R.string.foo)
怎么做到这个?或者是不可能的?
答案 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);