字符串资源
摘抄自Android Train
格式和样式设置
关于如何正确设置字符串资源的格式和样式,您应该了解下面这几个要点。
转义撇号和引号
如果字符串中包含撇号 ('),您必须用反斜杠 (') 将其转义,或为字符串加上双引号 ("")。 例如,以下是一些有效和无效的字符串:
This\'ll work
"This'll also work"
This doesn't work
如果字符串中包含双引号,您必须将其转义(使用 ")。 为字符串加上单引号不起作用。
This is a \"good string\".
This is a "bad string".'This is another "bad string".'
设置字符串格式
如果您需要使用
String.format(String, Object...)
设置字符串格式,可以通过在字符串资源中加入格式参数来实现。 例如,对于以下资源:Hello, %1$s! You have %2$d new messages.
在本例中,格式字符串有两个参数:%1$s 是一个字符串,而 %2$d 是一个十进制数字。 您可以像下面这样使用应用中的参数设置字符串格式:
Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
使用 HTML 标记设置样式
您可以使用 HTML 标记为字符串添加样式设置。例如:
Welcome to Android!
支持的 HTML 元素包括:
-
表示粗体文本。
-
表示斜体文本。
-
表示下划线文本。
String.format(String, Object...)
方法会去除字符串中的所有样式信息。 这个问题的解决方法是编写带转义实体的 HTML 标记,在完成格式设置后,这些实体可通过 fromHtml(String)
恢复。 例如:- 将您带样式的文本资源存储为 HTML 转义字符串:
Hello, %1$s! You have <
b>%2$d new messages<
/b>.
在这个带格式的字符串中,添加了 元素。请注意,开括号使用
<
;
表示法进行了 HTML 转义。- 然后照常设置字符串格式,但还要调用
fromHtml(String)
以将 HTML 文本转换成带样式文本:
Resources res = getResources();
String text =String.format(res.getString(R.string.welcome_messages), username, mailCount);
CharSequence styledText =Html.fromHtml(text);
【字符串资源】由于
fromHtml(String)
方法将设置所有 HTML 实体的格式,因此务必要使用 htmlEncode(String)
对您用于带格式文本的字符串中任何可能的 HTML 字符进行转义。 例如,如果您向 String.format()
传递的字符串参数可能包含“<”或“&”之类的字符,则必须在设置格式前进行转义,这样在通过 fromHtml(String)
传递带格式字符串时,字符就能以原始形式显示出来。 例如:String escapedUsername =TextUtil.htmlEncode(username);
Resources res = getResources();
String text =String.format(res.getString(R.string.welcome_messages), escapedUsername , mailCount);
CharSequence styledText =Html.fromHtml(text);
推荐阅读
- 一起来学习C语言的字符串转换函数
- 字符串拼接成段落,换行符(\n)如何只执行n-1次
- C语言的版本比较
- 富裕的好处是对资源的优先占有
- 有关育儿《人生由我》摘抄
- 预见人力资源
- 小狗钱钱摘抄
- JavaScript|JavaScript — call()和apply()、Date对象、Math、包装类、字符串的方法
- JS截取字符串的方法详解
- 摘抄/初恋时的毁灭性情感