截取字符串
public static void main(String[] args) { //split截取字符串 String str="xiao,jian,bin"; String reg=","; String[]arrs=str.split(reg); for (String string : arrs) { // System.out.println(string); } String str2="xiao jian bin"; String reg2=" +";//reg2表示“空格+”,在这里’+‘跟在空格“ ”后面表示一个或多个空格 String[]arrs2=str.split(reg); for (String string : arrs2) { // System.out.println(string); } String str3="xiao.jian.bin"; //表示用’.‘切割,因为’.‘是特殊字符,所以用斜杠’\.‘,因为’\‘也是特殊字符,所以“\\.” String reg3="\\."; String[]arrs3=str3.split(reg3); for (String string : arrs3) { // System.out.println(string); } String str4="c:\\abc\\sa.txt"; //使用'\'匹配,需要“\\”,同理“\\”来匹配,则“\\\\” String reg4="\\\\"; String[]arrs4=str4.split(reg4); for (String string : arrs4) { // System.out.println(string); } String str5="xiaokkkjianeeeeeebin"; //这里运用“组”的概念:“()”,可让该规则可重用,’.‘表示任意字符,//"(.)\\1+"第一个字符为任意字符,“\1“表示第二个和第一个字符一致,因’\‘为特殊字符所以“\\1“,//后面跟一个’+‘表示第二个字符出现一次或多次 String reg5="(.)\\1+"; String[] arrs5=str5.split(reg5); for (String string : arrs5) { System.out.println(string); } }
//替换字符串
public static void main(String[] args) { //repalceAll替换所有 String strings="80320080ifief8909sdfslf989080080808"; //第一位为数字,以后出现的数字个数大于5或等于5位 String mode="\\d{5,}"; String afterStr=strings.replaceAll(mode,"*"); System.out.println(afterStr);//*ifief8909sdfslf* String strings2="sajdflkkkkkewfljslfeeeeee"; //第一位为数字,以后出现的数字个数大于5或等于5位 String mode2="(.)\\1+"; String afterStr2=strings2.replaceAll(mode2,"&"); System.out.println(afterStr2);//sajdfl&ewfljslf& String strings3="sajdflkkkkkewfljslfeeeeee"; //第一位为数字,以后出现的数字个数大于5或等于5位 String mode3="(.)\\1+"; String afterStr3=strings3.replaceAll(mode3,"$1"); System.out.println(afterStr3);//sajdflkewfljslfe,叠词部分变为一个字符 }
//判断是否匹配
public static void main(String[] args) { //Matches匹配 String s="a3333"; //‘^'以什么字符开头,'$'以什么字符结束,'*'标示出现一次或者多次,"\d"标示整数,需要用'\'转义 String mode="^[a-z]\\d*$"; System.out.println(s.matches(mode));//结果:true String num="123456"; //确定第一位是整数"[0-9]","\d{5,14}"表示出现5位到14位整数 String mode2="[0-9]\\d{5,14}"; System.out.println(num.matches(mode2));//结果:true //电话号码号段匹配13xxxx,15xxxx,18xxxx String telNum="13588889999"; //第一位"[0-9]"数字,第二位“[3,8,5]”为其中的一位,”\d{9}“后面9位为整数 String mode3="[0-9][3,5]\\d{9}"; System.out.println(telNum.matches(mode3));//结果:true }
//matcher,Pattern
public static void main(String[] args) { /** * 匹配*/ String reg="[0-9]\\d{5,12}";//规则 String str="123456"; //三步曲 //1,将规则封装成正则对象 Pattern pattern=Pattern.compile(reg); //2,让正则对象和要作用的对象关联起来,获取匹配器对象 Matcher matcher=pattern.matcher(str); //字符串匹配功能 boolean flag=matcher.matches(); System.out.println(flag); /** * 将三个字符组成的单词取出*/ String str2="wolll shi zhong guo chan dang";//规则 // “\b” 表示边界 String reg2="\\b[a-z]{3}\\b"; Pattern pattern2=Pattern.compile(reg2); Matcher matcher2=pattern2.matcher(str2); //matcher2.find()规则作用在字符串上之后,并对符合规则的子字符串进行查找 //matcher.group()获取匹配后的字符串 //matcher2.start()返回子字符串的开始索引 //matcher2.end()返回子字符串的结束索引 while (matcher2.find()) { System.out.println(matcher2.group()); System.out.println(matcher2.start()+"----"+matcher2.end()); /** * 结果: shi 6----9 guo 16----19*/ } }
public static void main(String[] args) { String string="我我我....要要要....学学.....编....程程程程"; //用“”代替所有的点号 String string2=string.replaceAll("\\.+","");//"\\.+"表示一个点或者多个点 System.out.println(string2);//结果:“我我我要要要学学编程程程程” String string3=string2.replaceAll("(.)\\1+","$1");//用本组的第一个替换本组 System.out.println(string3);//结果:我要学编程 }