strings.xml中的那些特殊字符

  • 内容
  • 评论
  • 相关

前言

今天在解决项目中的Warn的时候,发现string.xml里面出现了几个有意思的警告,所以分享给各位有强迫症的程序猿们。Warn信息如下

警告<1>

我在string.xml中的使用是<string name="load_tip">正在加载中...</string>,提示信息为Replace "..." with ellipsis character (…, &&;#8230;) ?,也就是需要我们将...替换为后面的一个字符,不过个人尝试了下,解决办法是将...替换为Unicode表示,也就是<string name="load_tip">正在加载中\u2026</string>关于编码方式的区别可以查看字符编码这篇博客。同样的,对于其他一些特殊的符号,比如"°",在xml文件中使用的时候最好也是使用Unicode形式表示,也就是\u00B0

警告<2>

对于警告二是由于项目需要适配多语言环境,比如对于中国,时间显示为2017年01月01日,在英文下肯定不能这样显示了,所以将时间格式写在xml文件中,这样就可以根据语言的不同显示不同的格式了。

最初的想法是在xml中使用

<string name="time_format">%d年%02d月%02d日</string>

然后在代码中使用如下代码。

没想到出现了警告<2>,反复检查后发现是string.xml中的 % 导致编译失败,只要将上面的%d换成%1$d就行了,如果有多个,就依次为%1$d、%2$d、%3$d。

额外,如果你想%出现在字符串中,可以使用转义字符,也就是%%,或者使用<string name="test" formatted="false">% test %</string>即可。

其他

xml格式默认将标签开头和结尾的空格给省略,如下

<string name="unknow_radio_detail">    暂无视频详情</string>

会被解析成没有空格的形式,相当于被系统执行了一次trim操作。如果需要空格则应该为下面的形式:

<string name="unknow_radio_detail">&#160;&#160;&#160;&#160;暂无视频详情</string>

规则就一点:在string.xml中,如果需要特殊字符,一般使用Unicode形式即可

参考博客:找骨头的啊呜

评论

0条评论

发表评论

电子邮件地址不会被公开。