android string.xml中使用占位符

来源:互联网 发布:php高并发实战 编辑:程序博客网 时间:2024/04/28 01:57

不得不佩服Android studio强大,以前写代码只关注了是否拼写出错,现在根据studio的提示去操作,发现string.xml还可以写占位符!!!这下可以方便我对所有带参的文字的统一管理了。

写一个简单的案例。

在strings.xml中写入

[html] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. <string name="string_test_1">学号:%1$d ;姓名:%2$s ;成绩:%3$.2f</string>  

在Activity.Java中写入

[html] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. String testStr = getResources().getString(R.string.string_test_1);  
  2. String result = String.format(testStr,1001,"张三",9.235);  
  3. System.out.println(result);  

打印结果为:

[html] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. 学号:1001 ;姓名:张三 ;成绩:9.24  

这里要说明的是strings.xml中,

    %N代表第N个参数,如%3代表的是第三个参数;

    $是结束符;

    d/s/.2f代表的是整数/字符串/保留2位小数点的浮点数


延伸拓展

array-string 也可以使用占位符,如下,在strings.xml或另外起一个array.xml,写入:

[html] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. <array name="list">  
  2.         <item name = "item1">我是列表1,买身价为%1.2f元</item>  
  3.         <item name = "item2">我是列表2,买身价为%1.2f元</item>  
  4.         <item name = "item3">我是列表3,买身价为%1.2f元</item>  
  5.  </array>  


然后在Activity,java中写入:

[html] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. String[] arr = getResources().getStringArray(R.array.list);  
  2.         for (int i = 0;i<arr.length;i++){  
  3.             String temp = arr[i];  
  4.             arr[i] = String.format(temp,10.35*(i+1));  
  5.         }  
  6.         System.out.println(arr[0]+" | "+arr[1]+" | "+arr[2]);  

打印结果为:

[html] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. 我是列表1,买身价为10.35元 | 我是列表2,买身价为20.70元 | 我是列表3,买身价为31.05元  



以上是我的个人观点,欢迎大家来指正。


0 0