java用正则表达式判定特殊字符是否,存在就替换的问题?

我在Stringss="aabbcc[{dd}]eeff[{gg}]hhiijjkkll[{mmnn}]oopp";这个字符串,用正则表达式把[{}]这样的特殊字符过滤出... 我在String ss = "aabbcc[{dd}]eeff[{gg}]hhiijjkkll[{mmnn}]oopp";这个字符串,用正则表达式把[{}]这样的特殊字符过滤出来,就是把[{dd}]替换成dd,原来的字符串里面也变成aabbccddeeff... 展开
 我来答
liuxychad
推荐于2016-02-24 · TA获得超过263个赞
知道小有建树答主
回答量:216
采纳率:0%
帮助的人:321万
展开全部
String的replaceAll方法可以使用正则表达式进行搜索并替换,但不改变原字符串,如果需要改变原字符串,则需要用赋值语句:
ss=ss.replaceAll("正则表达式","替换内容");
比如将"aabbcc[{dd}]eeff[{gg}]hhiijjkkll[{mmnn}]oopp"里的[{等特殊符号去掉:
ss=ss.replaceAll("\W","");
弑神之风
2009-09-01 · TA获得超过306个赞
知道小有建树答主
回答量:78
采纳率:0%
帮助的人:117万
展开全部
至少有两种正则表达式的方法:

1、直接调用String类的replaceAll(String regex, String replacement)方法

代码:
String ss = "aabbcc[{dd}]eeff[{gg}]hhiijjkkll[{mmnn}]oopp";
ss.replaceAll("[\\[\\]\\{\\}]", "");//返回结果,可打印或返回
优点:简单
缺点:不具有通用性,需求变动则不适用,例如[{dd}]替换成DD

2、通过匹配规则来截取字符串

代码:
String ss = "aabbcc[{dd}]eeff[{gg}]hhiijjkkll[{mmnn}]oopp";
//正则表达式,表示由非[、]、{、}的任意字符构成
String tmp = "[^\\[^\\{^\\]^\\}.]";
//正则表达式,由5组构成第一组是普通字符串,第二组是"[{"字符串,第三组是普通字符串,第四组是"}]"字符串,第五组是普通字符串
Pattern pattern = Pattern.compile("(" + tmp + "*)(\\[\\{)(" + tmp + "*)(\\}\\])(" + tmp + "*)");
Matcher matcher = pattern.matcher(ss);
StringBuffer result = new StringBuffer();
while(matcher.find()) {
result.append(matcher.group(1) + matcher.group(3) + matcher.group(5));
}
//result就是最终结果。

优点:具有一定的通用性,可自己定制需要的字符串,新字符串可以由原字符串的部分组成,也可与其他字符拼装,能更好满足可重用性,例如需求变更成[{dd}]替换成DD,代码只需将result.append(matcher.group(1)+matcher.group(3)+matcher.group(5));换成result.append(matcher.group(1)+matcher.group(3).toUpperCase()+matcher.group(5));就能完成

缺点:代码较长

PS:StringBuffer可转化成String再返回
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Cp0204
2009-08-22 · 超过19用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:53.6万
展开全部
[\[\{\}\]]+

在java中

String ss = ss.replaceAll("[\\[\\{\\}\\]]+", "");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式