博客
关于我
Replace字符串,动态引用strings.xml
阅读量:64 次
发布时间:2019-02-25

本文共 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]”
这里写图片描述
2,代码中符号替换位名字,其中robotName为拿到的用户设置的名字,在机器人speak(用于说话方法)中调用str=replaceRobotName(str);

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”);
最后运行结果如下:
这里写图片描述

参考博客

你可能感兴趣的文章
mysql批量修改字段名(列名)
查看>>
MySQL批量插入数据遇到错误1213的解决方法
查看>>
mysql技能梳理
查看>>
MySQL报Got an error reading communication packets错
查看>>
Mysql报错Can‘t create/write to file ‘/tmp/#sql_3a8_0.MYD‘ (Errcode: 28 - No space left on device)
查看>>
MySql报错Deadlock found when trying to get lock; try restarting transaction 的问题解决
查看>>
MySQL报错ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘
查看>>
Mysql报错Packet for query is too large问题解决
查看>>
mysql报错级别_更改MySQL日志错误级别记录非法登陆(Access denied)
查看>>
Mysql报错:too many connections
查看>>
MySQL报错:无法启动MySQL服务
查看>>
mysql授权用户,创建用户名密码,授权单个数据库,授权多个数据库
查看>>
mysql排序查询
查看>>
MySQL排序的艺术:你真的懂 Order By吗?
查看>>
MySQL排序的艺术:你真的懂 Order By吗?
查看>>
Mysql推荐书籍
查看>>
Mysql插入数据从指定选项中随机选择、插入时间从指定范围随机生成、Navicat使用存储过程模拟插入测试数据
查看>>
MYSQL搜索引擎
查看>>
mysql操作数据表的命令_MySQL数据表操作命令
查看>>
mysql操作日志记录查询_如何使用SpringBoot AOP 记录操作日志、异常日志?
查看>>