一次性替换String中的多种词汇 比如"嘿嘿喔就是喜欢北京天安门杂各地" 将"嘿"替换成"哈","北京"替换成"beijing" ,"扎各地" 替换"ZGD" ,假设String较长,替换内容也不少,怎么操作比较有效和高效? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 感觉只能一种情况一个replaceAll吧. import java.util.regex.Matcher;import java.util.regex.Pattern;public class TestDemo { public static void main(String[] args) { Pattern pattern = Pattern.compile("(嘿嘿)"); Matcher matcher = pattern.matcher("啊啊杂各地啊我是你是嘿嘿喔就是嘿嘿喜欢北京天安门北京杂各地"); StringBuffer sbr = new StringBuffer(); while (matcher.find()) { matcher.appendReplacement(sbr, "哈"); } matcher.appendTail(sbr); pattern = Pattern.compile("(北京)"); matcher=pattern.matcher(sbr.toString()); StringBuffer sbr1 = new StringBuffer(); while (matcher.find()) { matcher.appendReplacement(sbr1, "beijing"); } matcher.appendTail(sbr1); pattern = Pattern.compile("(杂各地)"); matcher=pattern.matcher(sbr1.toString()); StringBuffer sbr2 = new StringBuffer(); while (matcher.find()) { matcher.appendReplacement(sbr2, "ZGD"); } matcher.appendTail(sbr2); System.out.println(sbr2.toString()); }}使用replaceAll一次次的可以,用上面的思想,你想想是否能够一次替换掉。 最好的办法就是下面的这种了.可以避免replaceAll产生的大量的的垃圾。速度也应该是可以的。只是事先要把所以被替换的字符串和替换的字符串做成一个Map.import java.util.regex.*; import java.util.*;public class test{ public static void main(String args[]) { String str="嘿嘿喔就是喜欢北京天安门杂各地"; Map<String,String> myMap=new HashMap<String,String>(); myMap.put("嘿","哈"); myMap.put("北京","BeiJing"); myMap.put("杂各地","ZGD"); String regex="HN-20080819-10*([1-9][0-9]*)"; Pattern p = Pattern.compile("嘿|北京|杂各地"); Matcher m = p.matcher(str); StringBuffer sb = new StringBuffer(); while (m.find()) { m.appendReplacement(sb,myMap.get(m.group())); } m.appendTail(sb); System.out.println(sb.toString()); }}F:\java>java test哈哈喔就是喜欢BeiJing天安门ZGD JTable选中行弹出右捷菜单? 一道递归调用题 java程序开机自动运行 java转化的问题 关于JFrame的setbackground 请教各位:关于 java 如何调试的问题? JFRAME简单问题 高分,高分!!(求救呀!!!) 环境真难配 UTF-8转GBK时的一个问题 java调用ocx java跟硬件结合 super的用法(初学者问题)
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestDemo {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("(嘿嘿)");
Matcher matcher = pattern.matcher("啊啊杂各地啊我是你是嘿嘿喔就是嘿嘿喜欢北京天安门北京杂各地");
StringBuffer sbr = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sbr, "哈");
}
matcher.appendTail(sbr);
pattern = Pattern.compile("(北京)");
matcher=pattern.matcher(sbr.toString());
StringBuffer sbr1 = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sbr1, "beijing");
}
matcher.appendTail(sbr1);
pattern = Pattern.compile("(杂各地)");
matcher=pattern.matcher(sbr1.toString());
StringBuffer sbr2 = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sbr2, "ZGD");
}
matcher.appendTail(sbr2);
System.out.println(sbr2.toString()); }
}使用replaceAll一次次的可以,用上面的思想,你想想是否能够一次替换掉。
可以避免replaceAll产生的大量的的垃圾。速度也应该是可以的。只是事先要把所以被替换的字符串和替换的字符串做成一个Map.import java.util.regex.*;
import java.util.*;
public class test{ public static void main(String args[]) {
String str="嘿嘿喔就是喜欢北京天安门杂各地";
Map<String,String> myMap=new HashMap<String,String>();
myMap.put("嘿","哈");
myMap.put("北京","BeiJing");
myMap.put("杂各地","ZGD");
String regex="HN-20080819-10*([1-9][0-9]*)";
Pattern p = Pattern.compile("嘿|北京|杂各地");
Matcher m = p.matcher(str);
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb,myMap.get(m.group()));
}
m.appendTail(sb);
System.out.println(sb.toString());
}
}F:\java>java test
哈哈喔就是喜欢BeiJing天安门ZGD