假设我有这个字符串:
您的玩家拥有良好守门员技能和体面人员技能
现在字符串中不以粗体显示的部分始终相同,运行时已知的部分是粗体部分。
那我怎么能这样做:
您的玩家拥有 {var1} 守门员技能和 {var2} 人员技能
然后在运行时使用正确的值填充这些变量?
我不想连接像:
这样的字符串"You player has a" + var1 + "keeper skill and a" + var2 + "people skill"
答案 0 :(得分:36)
您需要查看Android字符串资源指南。有一种方法可以提供静态字符串,以后可以用变量格式化。
http://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling
您将定义类似
的字符串<resources>
<string name="welcome_messages">Hello, %1$s! You have <b>%2$d new messages</b>.</string>
</resources>
稍后在代码中你可以替换
Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
CharSequence styledText = Html.fromHtml(text);
答案 1 :(得分:7)
在Strings.xml中
You player has a %1$d keeper skill and a %2$d people skill
在java中
getString(R.string.article_stats, var1, var2);
答案 2 :(得分:4)
是的,请参阅android devguide
中的以下内容如果需要使用String.format(String, Object...)
格式化字符串,则可以通过将格式参数放在字符串资源中来实现。例如,使用以下资源:
<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>
在此示例中,格式字符串有两个参数:%1 $ s是字符串,%2 $ d是十进制数。您可以使用应用程序中的参数格式化字符串,如下所示:
Resources res = getResources();
String text = String.format(
res.getString(R.string.welcome_messages),
username, mailCount);
答案 3 :(得分:3)
在字符串xml中,您已在CDATA标记中定义了html语法,如
<![CDATA[<b> %1$s bought </b>, last purchased from %2$s <b> %3$s </b>]]>
和你的java类
String detail = String.format(getString(R.string.detail),15,"New Delhi","23 mins ago");
detailView.setText(Html.fromHtml(detail ));