一.字符串切割
超循环输出
for(String s : arr)
{
System.out.println(s);
}
}
String [] arr=str.split(reg);
str:进行切割的字符串 reg:切割的标志
class StringQieGe
{
public static void main(String[] args)
{
//splitDemo("ding,wang,li,wu",",");//逗号分割
// splitDemo("ding wang li wu"," +");////按多个空格进行分割
//splitDemo("ding.wang.li.wu","\\.");//按点分割
//splitDemo("esffdghhrzzsccccv","(.)\\1+");//按叠词进行分割.为了可以让规则的结果被重用
//可以将规则封装成一个组。用()完成。组的出现都有编号。
//从1开始。 想要使用已有的组可以通过 \n(n就是组的编号)的形式来获取的。
splitDemo("esffddghhrzzscccvww","(.)\\1(.)\\2");
}
public static void splitDemo(String str,String reg)
{
String[] arr=str.split(reg);
for(String s : arr)
{
System.out.println(s);
}
}
}
组和捕获
捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
1 ((A)(B(C))) 2 \A 3 (B(C)) 4 (C)
组零始终代表整个表达式。
二.字符串按正则替换
str=str.replaceAll(reg,newStr);
reg:正则表达式(替换条件). newStr(要替换的串);
replaceAllDemo(str1,"(.)\\1+","$1");//将叠词部分替换成单个字符 JJJJ—->J $1 代表组1
class StringTiHuan
{
public static void main(String[] args)
{
String str="s12daff123135dsadasda4654654";
//replaceAllDemo(str,"\\d{5,}","#");//\\d等价于[0,9];数字串长度超多5替换成#;
String str1="dfssXJJJJdasddsab";
//replaceAllDemo(str1,"(.)\\1+","&");//将叠词部分替换成&
replaceAllDemo(str1,"(.)\\1+","$1");//将叠词部分替换成单个字符 JJJJ—->J $1 代表组1
}
public static void replaceAllDemo(String str,String reg,String newStr)
{
str=str.replaceAll(reg,newStr);
System.out.println(str);
}
}