首页 / JAVA / Java:用其他不同字符替换一组字符
Java:用其他不同字符替换一组字符
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java:用其他不同字符替换一组字符,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1889字,纯文字阅读大概需要3分钟。
内容图文
![Java:用其他不同字符替换一组字符](/upload/InfoBanner/zyjiaocheng/692/88129931c5f84571bdfb20a2f08bd5e4.jpg)
我应该做一个自定义的装饰器,这样我就可以替换来自控制台的输入和来自文件的输入:
>一组具有特定字符的字符(例如char [] x = {‘a’,’b’},其中char y =’*’,因此a和b都变为*
>一组字符与另一对成对的字符(例如char [] x = {‘a’,’b’}与char [] y = {‘c’,’d’},因此a变成c,b变成d
最好的方法是什么?我用正则表达式制作了第一个(String replaceAll = s.replaceAll(“(a | b)”,String.valueOf(replacement));),但这在第二种情况下不起作用.有没有办法使一个正则表达式中的第二种情况?我应该做一个HashMap吗?
解决方法:
首先在替换的字符及其替换之间创建某种映射会比较容易.我的意思是
Map<String, String> map = new HashMap<>();
map.put("a", "c");
map.put("b", "d");
那么您可以使用Matcher类中的appendReplacement和appendTail替换匹配的字符.可以像map.get(matchedCharacter)一样确定如何获取替换字符.
简单演示
Map<String, String> map = new HashMap<>();
map.put("a", "c");
map.put("b", "d");
String demo = "abcdef";
Pattern p = Pattern.compile("[ab]");
Matcher m = p.matcher(demo);
StringBuffer sb = new StringBuffer();
while (m.find()){
m.appendReplacement(sb, map.get(m.group()));
}
m.appendTail(sb);
String replaced = sb.toString();
System.out.println(replaced);
输出:cdcdef
Java 9及更高版本的更新
在下面的模板中,我们通常只更改一件事,即关于将什么用作替换已建立的匹配项的决定.
StringBuffer sb = new StringBuffer();
while (m.find()){
m.appendReplacement(sb, /* decision about replacement*/ );
// ^^^^^^^^^^^^^^^^^^^^^^^^^^
}
m.appendTail(sb);
String replaced = sb.toString();
因此,由于重复了该逻辑的其余部分,因此将该模板包装为String replaceAll?(Function<MatchResult,String> replacer),这要求我们提供为已建立的匹配项获取替换的逻辑.因此,以上代码可以简化为:
Map<String, String> map = new HashMap<>();
map.put("a", "c");
map.put("b", "d");
String demo = "abcdef";
Pattern p = Pattern.compile("[ab]");
Matcher m = p.matcher(demo);
String replaced = m.replaceAll(match -> map.get(match.group()));
System.out.println(replaced);
内容总结
以上是互联网集市为您收集整理的Java:用其他不同字符替换一组字符全部内容,希望文章能够帮你解决Java:用其他不同字符替换一组字符所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。