使用占位符(Context类getString(@StringRes int resId, Object… formatArgs)的使用)
%1$s表示替换的为String类型;
%1$d表示替换的为int类型;
数字表示替换字符串中要替换的位置,若一个字符串要替换两个int类型,在替换位置分别写%1$d和%2$d;
%s 、%d为缩写方式,只替换一个位置,可以这么写;
//string.xml定义
<string name="remove_family_sure">确定要删除亲友‘%s’吗?</string>
//字符串 “确定要删除亲友‘张三’吗?”
String str=String.format(mContext.getString(R.string.remove_family_sure),"张三");
<string name="ahieveinfo">来这里的第%1$d天,已获得%2$s个成就</string>
//来这里的第1天,已获得五十个成就
tv.setText(String.format(mContext.getString(R.string.ahieveinfo),1,"五十"));
问题记录:java.util.UnknownFormatConversionException
错误原因:%d\%
错误分析:以为\是转义符,其实是错误的
要写成%d%%
常见的一些转换符
转换符 | 说明 | 示例 |
---|---|---|
%s | 字符串类型 | github |
%c | 字符类型 | c |
%b | 布尔类型 | true |
%d | 整数类型(十进制) | 1024 |
%x | 整数类型(十六进制) | FF |
%o | 整数类型(八进制) | 77 |
%f | 浮点类型 | 99.66 |
%a | 十六进制浮点类型 | FF.35AE |
%e | 指数类型 | 9.38e+5 |
%g | 通用浮点类型(f和e类型中较短的) | — |
%h | 散列码 | — |
%% | 百分比类型 | — |
%n | 换行符 | — |
%tx | 日期与时间类型(x代表不同的日期与时间转换符) | — |
支持以下 HTML 元素:
粗体:<b>、<em>
斜体:<i>、<cite>、<dfn>
文本放大 25%:<big>
文本缩小 20%:<small>
设置字体属性:<font face=”font_family“ color=”hex_color”>。可能的字体系列示例包括 monospace、serif 和 sans_serif。
设置等宽字体系列:<tt>
删除线:<s>、<strike>、<del>
下划线:<u>
上标:<sup>
下标:<sub>
列表标记:<ul>、<li>
换行符:<br>
区隔标记:<div>
CSS 样式:<span style=”color|background_color|text-decoration”>
段落:<p dir=”rtl | ltr” style=”…”>
数组字符串使用
string.xml中定义一个数组
<string-array name="clear_set">
<item>未选择任何操作,可用内存为%3$s</item>
<item>杀死了%1$d个进程,可用内存为%3$s</item>
<item>清除了%2$s缓存,可用内存为%3$s</item>
<item>杀死了%1$d个进程,清除了%2$s缓存,可用内存为%3$s</item>
<item>关闭悬浮图标.</item>
</string-array>
在需要使用的地方使用Resource的getStringArray方法获取
Resources res =getResources();
String[] formats=res.getStringArray(R.array.clear_set);