Android字符串及字符串资源的格式化
为什么要写这⼀篇随笔呢?最近做项⽬的过程中,遇到很多页⾯在要显⽰⽂本时,有⼀部分是固定的⽂本,有⼀部分是动态获取的,并且格式各式各样。⼀开始采取⽐较笨的办法,把他拆分成⼀个个⽂本控件,然后对不同的控件采⽤不同的样式。这样做效率
很低,并且⽂本之间的对齐是个很⼤的问题,后来到⽹上寻求帮助,到⼀些有关Android字符串和字符串资源格式化的⽂章,在此做⼀个总结。
⼀.字符串格式化
Java的String类给我们提供了两个重载的格式化字符串的⽅法,可以通过占位符的⽅式,向固定字符串中传⼊参数。他们分别是:
format(String format, args) 新字符串使⽤本地语⾔环境,制定字符串格式和参数⽣成格式化的新字符串。
format(Locale locale, String format, args) 使⽤指定的语⾔环境,制定字符串格式和参数⽣成格式化的字符串。
例如:
字符串占位符%s :System.out.println("Hi,%s", "王⼒")  输出  Hi,王⼒
⼗进制整形占位符%d :System.out.println("我今年%d岁", 20)  输出我今年20岁
浮点型占位符%f:System.out.println("荔枝的价格是 %f 元", 3.5)  输出荔枝的价格是3.5元
还有其他字符型,整形,⽇期格式等等格式化⽅法,再次就不⼀⼀举例了。
⼆.带HTML标签的字符串格式化
当我们需要对⼀段⽂字的部分⽂字进⾏字体颜⾊,字形,字体风格设置时,我们可以使⽤HTML标签,然后在输出的时候,通过Html.from⽅法解析为html字符串。
例如:
String str = "后⾯的⽂字是加粗的红⾊⽂字:" + "<font color='#ff0000'><b>加粗红⾊⽂字</b></font>";
在⽂本控件输出的时候,我们需要解析⼀下
CharseQuence  cq=Html.from(str);
textView.setText(cq);
第⼀种情形和第⼆种情形可以结合起来使⽤:
String str = "后⾯的⽂字是加粗的红⾊⽂字:" + "<font color='#ff0000'><b>%s</b></font>";
String str2=String.format(str,"红⾊加粗⽂字");
输出与上⾯⼀样.
三.字符串资源的格式化
我们在字符串资源中同样可以通过占位符来给字符串传⼊参数,不过与第⼀种⽅式相⽐,占位符的格式略有不同
我们使⽤%[index]$[type]格式进⾏标记,index标记替换资源中第index个资源对应的位置,type则标⽰所要替换的资源的类型(s表⽰资源为字符串格式)
例如:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, my name is %1$s!</string>
<string name="app_name">MyString</string>
</resources>
TextView mytext = (TextView)findViewById(string);
String myname = getString(R.string.hello);
myname = String.format(myname, "yinghui");
mytext.setText(myname);
如果需要同时传⼊多个参数,则需要改变index,顺序⼀⼀对应。例如%1$s  %2$s等等
四.带HTML标签的字符串资源的格式化
由于Android开发中的字符串资源是保存在XML⽂件中,因为Html中的<, >,&有特殊含义,(前两个字符⽤于链接签,&⽤于转义),不能直接使⽤。使⽤这三个字符时,应使⽤它们的转义序列。
例如:
我们需要在XML中保存这个字符串<b>我是加粗⽂字</b> 需要将<;转义为<;或者< ,需要将>转义为>;或者>(这⾥也可以不转义)代码:
<string name="format2"><b>;我是加粗⽂字</b></string>
需要说明的是:
    a. 转义序列各字符间不能有空格;
    b. 转义序列必须以“;”结束;
    c. 单独的&不被认为是转义开始。
    d. 区分⼤⼩写 
常见的转义字符见下表:
字符实体名字⼗进制字符编号
&&&
<<<
html文件格式化>>>
单引号&apos'
"""
空格  
版权符©©
注册符®®
使⽤⽅法
String str=getString(R.string.format2);
CharseQuence cq=Html.from(str);
textView.setText(cq);
通过灵活运⽤以上字符串格式化的技巧,我们可以加快开发的效率,提⾼界⾯布局的美观程度。
参考资料:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。