【发布时间】:2014-04-12 14:21:52
【问题描述】:
我有以下字符串资源:
<string name="foo">This is a {0} test. Hello {1}</string>
现在我想在调用时传递值 1 和 foo:
getResources().getText(R.string.foo)
这个怎么做?还是不可能?
【问题讨论】:
标签: android
我有以下字符串资源:
<string name="foo">This is a {0} test. Hello {1}</string>
现在我想在调用时传递值 1 和 foo:
getResources().getText(R.string.foo)
这个怎么做?还是不可能?
【问题讨论】:
标签: android
getResources().getString(R.string.foo, 1, "foo"); 但字符串应该使用string format ...所以字符串中的字符串应该如下所示:
<string name="foo">This is a %d test. Hello %s</string>
【讨论】:
我不太确定 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!");
【讨论】:
你可以这样做: 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
【讨论】:
我相信做你想做的最简单的方法是将你必须的代码行保存到一个变量中,然后使用 Java String replace() 函数。
String fooText = getResources().getText(R.string.foo);
fooText = fooText.replace("{0}", myZeroVar);
fooText = fooText.replace("{1}", myOneVar);
【讨论】: