本文共 1305 字,大约阅读时间需要 4 分钟。
题目:
例如,有一个字符串”abcdefg” 现在的要求是把”abc”变成”efg” 把”efg”变成”xyz” 怎么搞? 即目标串为:”efgdxyz” (PS:replaceAll会导致同步问题,就是说”abc”变成”efg”后,立刻又变成的”xyz”)一,使用正则
static void replace() {        Pattern p = Pattern.compile("abc|efg");        Matcher m = p.matcher("abcdefg");        StringBuffer sb = new StringBuffer();        while (m.find()) {            if(m.group().equals("abc")) m.appendReplacement(sb, "efg");            else if(m.group().equals("efg")) m.appendReplacement(sb, "xyz");        }        m.appendTail(sb);        System.out.println(sb.toString());    }   二,直接replaceAll
"abcdefg".replaceAll("efg", "xyz").replaceAll("abc", "efg");   项目中 机器人设置昵称,文本中用到机器人昵称,需要动态引用,台词位于strings.xml资源文件,用上述方法是可以的,步骤如下:
1,strings.xml资源文件中涉及需要随时修改的名字替换成符号,如“[robotName]”private static String replaceRobotName(String str) {        if (TextUtils.isEmpty(str)) return "";        return str.replaceAll("\\[robotName]", robotName);    }   另一种方法就是:
整数型:%1$d,浮点型:%2$.2f,字符串:%3$s 
其中%后面是占位符的位置,从1开始,
$ 后面是填充数据的类型 %d:表示整数型; %f :表示浮点型,其中f前面的.2 表示小数的位数 %c:表示字符串
这些和C语言中输入输出函数的占位符很相似
在程序中我们可以通过下面的代码对字符串进行格式化,也就是填充占位符中的内容:
String data = getResources().getString(R.string.data);
data = String.format(data, 100, 10.3, “2011-07-01”); 最后运行结果如下:参考博客