java 14-3 正则表达式的分割
分割功能
String类的public String[] split(String regex)
根据给定正则表达式的匹配拆分此字符串。
例子:
可以用来做年龄段的筛选,比如说,我要筛选18-26之间的年龄段的人
而18-26在后台是字符串"18-26",而年龄在后端是int类型的,18,23之类的。
所以,我们要对"18-26"这个字符串进行操作:
A:分割取18 和 26,
B:把18和26转成int类型的
C:键盘输入年龄
D:对这个年龄进行判断
a:符合这个年龄段
b:不符合这个年龄段
1 import java.util.Scanner; 2 public class NameTest { 3 4 public static void main(String[] args) { 5 //定义年龄段的搜索范围 6 String ages = "18-26"; 7 8 //定义正则表达式的规则 9 String regex = "-"; 10 11 //调用方法,把-给分割掉 12 String[] array = ages.split(regex); 13 14 //把array的第一个数据变成int,此时array = {18,26}; 15 int startage = Integer.parseInt(array[0]); 16 //第二个数据变成int 17 int endage = Integer.parseInt(array[1]); 18 19 //键盘输入年龄 20 Scanner sc = new Scanner(System.in); 21 System.out.println("请输入年龄"); 22 int age = sc.nextInt(); 23 24 //对输入的年龄进行判断 25 if( age >= startage && age <= endage){ 26 System.out.println("你的年龄符合"); 27 } 28 else{ 29 System.out.println("你的年龄不符合"); 30 } 31 } 32 33 }
我有如下一个字符串:"91 27 46 38 50"
请写代码实现最终输出结果是:"27 38 46 50 91"
分析:
A:定义一个字符串
B:把字符串中的空格分隔开
C:把字符串转换成数组
D:把数组里的元素转换成int类型
a:首先得定义一个int数组,长度跟字符串数组一样
b:然后再把数组里的元素转成int类型
E:给int数组进行排序
F:对排序后的数组进行拼接,转换成字符串
G:输出字符串
1 import java.util.Arrays; 2 public class DivisionTest3 { 3 4 public static void main(String[] args) { 5 //定义一个字符串 6 String s = "91 27 46 38 50"; 7 //直接分割开空格 8 String[] str = s.split(" "); 9 //把字符串转换成数组 10 char[] c = s.toCharArray(); 11 //把数组里的元素转换成int类型 12 //a:首先得定义一个int数组,长度跟字符串数组一样 13 int[] arr = new int[str.length]; 14 //b:然后再把数组里的元素转成int类型 15 for(int x = 0;x < str.length ; x++){ 16 arr[x] = Integer.parseInt(str[x]);//字符串数组里的元素转成int类型 17 } 18 //E:给int数组进行排序 public static void sort(int[] a) 19 Arrays.sort(arr); 20 //F:对排序后的int数组进行拼接,转换成字符串 21 //定义一个StringBuilder,比StringBuffer高效率 22 StringBuilder sb = new StringBuilder(); 23 for(int x = 0; x < arr.length; x++){ 24 if(x < arr.length){ 25 sb.append(arr[x]+" "); 26 } 27 } 28 //由于这样的拼接,最后一个元素后面有空格,所以要去除空格 29 //public String trim() 返回字符串的副本,忽略前导空白和尾部空白。 30 //由于这个方法是针对字符串的,所以,得把sb转换成字符串 31 String result = sb.toString().trim(); 32 //输出结果 33 System.out.println("转换后的结果是:"+result); 34 } 35 36 }
替换功能
String类的public String replaceAll(String regex,String replacement)
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
例子:
有些论坛的回复内容都屏蔽掉了连续出现5个数字以上的情况,改成用**代替。这个就可以设置
分析:
A:创建键盘录入
B:设置方法
a:返回类型 String
b:参数列表 String
1 public class ReplaceTest1 { 2 3 public static void main(String[] args) { 4 5 //键盘录入 6 Scanner sc = new Scanner(System.in); 7 System.out.println("回复:"); 8 String str = sc.nextLine(); 9 10 //调用方法 11 System.out.println("内容:"+replace(str)); 12 } 13 14 //定义方法 15 public static String replace(String str){ 16 //设置正则表达式的屏蔽规则 17 String reuslt = str.replaceAll("\\d{5,}", "***"); //数字连续出现5次或5次以上,直接用***替换掉 18 return reuslt; 19 } 20 }