栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java一次(或以最有效的方式)替换字符串中的多个不同子字符串

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java一次(或以最有效的方式)替换字符串中的多个不同子字符串

如果你要处理的字符串很长,或者你要处理许多字符串,那么使用java.util.regex.Matcher可能是值得的(这需要花很长时间进行编译,因此效率不高) (如果你的输入很小或搜索模式经常更改)。

以下是一个完整的示例,基于从地图中获取的令牌列表。(使用来自Apache Commons Lang的StringUtils)。

Map<String,String> tokens = new HashMap<String,String>();tokens.put("cat", "Garfield");tokens.put("beverage", "coffee");String template = "%cat% really needs some %beverage%.";// Create pattern of the format "%(cat|beverage)%"String patternString = "%(" + StringUtils.join(tokens.keySet(), "|") + ")%";Pattern pattern = Pattern.compile(patternString);Matcher matcher = pattern.matcher(template);StringBuffer sb = new StringBuffer();while(matcher.find()) {    matcher.appendReplacement(sb, tokens.get(matcher.group(1)));}matcher.appendTail(sb);System.out.println(sb.toString());

编译正则表达式后,通常会很快扫描输入字符串(尽管如果你的正则表达式很复杂或涉及回溯,那么你仍然需要进行基准测试以确认这一点!)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431928.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号