android中的格式化字符串.doc
文本预览下载声明
Android字符串资源及其格式化
????? 在Android项目布局中,资源以XML文件的形式存储在res/目录下。为了更好的实现国际化及本地化,字符串集通常以XML文件的形式存储在res/values/目录下。
?
1、纯文本字符串
????? 一般来说,使用纯文本字符串仅仅需要res/values目录下的一个XML文件(通常命名为res/values/strings.xml,可以使用其它的文件名替换strings),根元素为resources,希望编码为资源的每个字符串都有一个string子元素。String元素包含name特性,它标示了此字符串的唯一名称,还有一个文本元素,包含字符串的文本。
字符串的表示分以下三种情况:
a) 普通字符串(不含双引号(”)及单引号(’))。其在XML文件中如代码一所示定义。
代码一:
[cpp]? HYPERLINK /wsywl/article/details/6555959 \o view plain view plain HYPERLINK /wsywl/article/details/6555959 \o copy copy
?xml?version=1.0?encoding=utf-8???
resources??
????string?name=helloHello?World!/string??
/resources??
b)?字符串仅含单引号。其在XML文件中如代码二或代码三(使用转义字符反斜杠“/”)所示定义。
代码二:
[cpp]? HYPERLINK /wsywl/article/details/6555959 \o view plain view plain HYPERLINK /wsywl/article/details/6555959 \o copy copy
?xml?version=1.0?encoding=utf-8???
resources??
string?name=helloHello?World!/string??
/resources??
代码三:
[cpp]? HYPERLINK /wsywl/article/details/6555959 \o view plain view plain HYPERLINK /wsywl/article/details/6555959 \o copy copy
?xml?version=1.0?encoding=utf-8???
resources??
????string?name=helloHello/?World!/string??
/resources??
c)?其它情况下的字符串。其在XML文件中如代码三所示定义,即使用一个前置反斜杠进行转义。代码四给出了一个示例。
代码四:
[cpp]? HYPERLINK /wsywl/article/details/6555959 \o view plain view plain HYPERLINK /wsywl/article/details/6555959 \o copy copy
?xml?version=1.0?encoding=utf-8???
resources??
????string?name=helloHello/?World/!/string??
/resources??
?
2、格式字符串
????? Android与Java的其它实现一样支持格式字符串。这里字符串包含一些占位符,表示在运行时要使用可变信息替换的数据(例如,Hello everyone, my name is %1$s)。占位符的规定简述如下:其使用%[index]$[type]格式进行标记,index标记替换资源中第index个资源对应的位置,type则标示所要替换的资源的类型(s表示资源为字符串格式)。这里给出一个格式字符串的例子,代码五为文件strings.xml中的内容,代码六为进行字符串替换时的Java代码,图1则给出了最终的效果图。
代码五:
[cpp]? HYPERLINK /wsywl/article/details/6555959 \o view plain view plain HYPERLINK /wsywl/article/details/6555959 \o copy copy
?xml?version=1.0?encoding=utf-8???
resources??
????string?name=helloHello?World,?my?name?is?%1$s!/string??
????string?name=app_nameMyString/string??
/resources??
代码
显示全部