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"));
}
}