收藏:小而偏但实用的java方法或工具类 随手记录不想每次用到都百度(replaceAll()用法)

47 阅读2分钟

replaceAll()用法

/* * replaceAll(): 
* 格式: 
* 原始字符串.replaceAll(正则,"替换新内容"); 
* 将原始字符串中,与所有正则表达式匹配的地方,都进行替换, 
* 返回一个新字符串 */

replace和replaceAll是JAVA中常用的替换字符的方法

public String replace(char oldChar, char newChar) 
在字符串中用newChar字符替代oldChar字符,返回一个新的字符串  

public String replaceAll(String regex,String replacement)
使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每个子字符串。  

区别:

1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);

2)replaceAll的参数是regex,即基于正则表达式的替换,比如,可以通过replaceAll("\d", “*”)把一个字符串所有的数字字符都换成星号;

相同点:

都是全部替换,即把源字符串中的某一字符或字符串全部换成指定的字符或字符串,如果只想替换第一次出现的,可以使用replaceFirst(),这个方法也是基于规则表达式的替换,但与replaceAll()不同的是,只替换第一次出现的字符串;

需求1:java replaceAll(,)方法的使用 多个逗号变一个

/**
 * @param args
 */
public static void main(String[] args) {
	String str = ",,,,123,,,,201,,,,,,333,,555,,,678,,,,,,501,,,,,,,,,";
	str = str.replaceAll("[',']+", ",");
	System.out.println(str);
}

其他用法示例:

public class TestReplaceAll {
    public static void main(String[] args) {

        //1.基本用法
        String str = "bbb,ccc,ddd,eee";//将所有逗号替换为空格
        String r1 = str.replaceAll(","," ");
        System.out.println(r1);

        //只替换第一个匹配结果
        System.out.println(str.replaceFirst(","," "));

        //2.贪婪模式    +,.,?它们会尽可能多的匹配内容,因此.+匹配内容为:aaa</p><p>bbb</p><p>ffff
        String str1 = "<p>aaa</p><p>bbb</p><p>ffff</p>";
        //替换为:            bbb       bbb
        str1.replaceAll("<p>.+</p>","bbb");//   .:表任意
        System.out.println(str1.replaceAll("<p>.+</p>","bbb"));//实际只替换一个

        //3.非贪婪模式
        //+?    尽可能少的匹配
        //*?    尽可能少的匹配
        //??    尽可能少的匹配
        System.out.println(str1.replaceAll("<p>.+?</p>","bbb"));
        System.out.println(str1.replaceAll("<p>.+?</p>","<p>bbb</p>"));

        //3.替换中的分组
        //例1:
        //最终是希望结果为:aaabbbffff
        String str2 = "<p>aaa</p><p>bbb</p><p>ffff</p>";

        //$:用括号分组,用$1表示要替换第一组的内容,即第一个()内的内容
        System.out.println(str1.replaceAll("<p>(.+?)</p>", "$1"));             
        System.out.println(str1.replaceAll("<p>(.+?)</p>", "<a>$1</a>"));

        //替换中的分组
        //例2:
        String str3 = "marry xing";//=>xing marry
        str3.replaceAll("(.+?) (.+)", "$2 $1");
        System.out.println(str3.replaceAll("(.+?) (.+)", "$2 $1"));
        System.out.println(str3.replaceAll("(.+?)\\s(.+)", "$2 $1"));


    }
}