首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

Java中字符串匹配解决思路

2013-09-05 
Java中字符串匹配例如,srcabc123df12gh630hh2要将字符串中遇到的数字前后都加上*,得到新字符串。即abc*

Java中字符串匹配
例如,src="abc123df12gh630hh2";要将字符串中遇到的数字前后都加上*,得到新字符串。即abc*123*df*12*..... 这样的字符串,怎么弄好呢。
[解决办法]


        String string = "abc123df12gh630hh2";
        Pattern p = Pattern.compile("\\d+");
        Matcher m = p.matcher(string);
        StringBuilder builder1 = new StringBuilder();
        int index = 0;
        while (m.find()) {
            builder1.append(string.substring(index, m.start()));
            builder1.append("*").append(m.group()).append("*");
            index = m.end();
        }
        builder1.append(string.substring(index));
        System.out.println(builder1.toString());

[解决办法]

public static void main(String[] args) throws Exception{
String src="abc123df12gh630hh2";
src=src.replaceAll("(\\d+)","*$1*");
System.out.println(src);
}

[解决办法]
引用:
Quote: 引用:


public static void main(String[] args) throws Exception{
String src="abc123df12gh630hh2";
src=src.replaceAll("(\\d+)","*$1*");
System.out.println(src);
}

哇,正则大神啊,这个更简洁了。能简单解释一下后面替换的字符的含义吗,*$1*为何能通配遇到的数字呢。简单解释一下哈!

前面的(\\d+)就把匹配到的数字捕获为组1了,后面$1表示组1的内容前后加*就等于把捕获到的内容前后加*

热点排行