private static String getBestMsg(String msg) {
Pattern pa = Pattern.compile("\\^\\^[A-Za-z0-9]+\\|{8}");
Matcher matcher = pa.matcher(msg);
while(matcher.find()) {
String a = matcher.group();
System.out.println(a);
}
return msg;
}
通过上面我取到
^^0212H||||||||
^^0212H||||||||
^^0212H||||||||
我想将H去掉
^^0212||||||||
返回给原字符串,使原字符串中也没有H
新人,有思路,但不知道具体该怎么写
使用替换嘛,将'H' 替换成 ''
再用正则表达式(字符串函数)对H进行处理,返回字符串就行了!!!给分呦,,老哥
正则表达式对H进行处理,返回字符串
return msg.replace(“H”,string.empty)
在循环里面的a字符串的定义下加上a=a.replaceFirst("H", "");这句,就好了。
如果是去处所有的字母就是 return msg.replaceAll("[a-zA-Z]",string.empty);
不太明白你的意思,能够在说明一下么
public static void main(String[] args) {
String msg = "^^0212H||||||||";
Pattern pa = Pattern.compile("(\\^\\^[A-Za-z0-9]+)[A-Za-z]+(\\|{8})");
Matcher matcher = pa.matcher(msg);
while(matcher.find()) {
//return matcher.group(1)+matcher.group(2);
System.out.println(matcher.group(1)+matcher.group(2));
}
}
分组捕获,然后替换掉拼接起来,就是你对你所有的内容形成一个分组:(.*)(\^\^[A-Za-z0-9]+\|{8}),这样你处理的时候第一个分组直接拼接,第二个分组处理后拼接,这是我处理这种问题的方案
要分成多次拼接的,一步容易出错。
public static void main(String[] args) {
String msg = "^^0212H||||||||";
Pattern p = Pattern.compile("\\^\\^[A-Za-z0-9]+\\|{8}");
Matcher m = p.matcher(msg);
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, m.group().replace("H", ""));
}
m.appendTail(sb);
System.out.println(sb.toString());
}