可以用正则表达式将字符串切割,有split(regex)方法将字符串切割,但是在写正则表达式的时候需要注意格式正确,否则切割之后就什么都没有了。
package Regex; public class Spilt { public static void main(String[] args) { demo1(); demo2(); demo3(); } public static void demo3() { System.out.println("以下是用\\.对字符串'哈哈.波波.呵呵.无误'的切割结果"); String s2="哈哈.波波.呵呵.无误"; String [] arr2=s2.split("\\."); for (int i = 0; i < arr2.length; i++) { System.out.println(arr2[i]); } } public static void demo2() { System.out.println("以下是用.对字符串'哈哈.波波.呵呵.无误'的切割结果"); String s1="哈哈.波波.呵呵.无误"; String [] arr1=s1.split("."); for (int i = 0; i < arr1.length; i++) { System.out.println(arr1[i]); } } public static void demo1() { System.out.println("以下是用' '对字符串'哈哈 波波 呵呵 无误'的切割结果"); String s="哈哈 波波 呵呵 无误"; String [] arr=s.split(" "); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } }
可以发现用.来切割字符串那结果什么也没有,那是因为.代表任意字符,匹配任何字符都会切割,所以最后什么也没有,因此如果想用.切割就必须要用转义字符\\.这样才能达到目的。因此如果想用的正则有重复(与语法),则需要用转义字符
例子:有如下一个字符串"91 27 46 38 50" 写代码实现最终输出结果为:"27 38 46 50 91"
package Regex; import java.util.Arrays; /* * 案例1 * 需求:有如下一个字符串"91 27 46 38 50" 写代码实现最终输出结果为:"27 38 46 50 91" * 思路: * 1将字符串切割成字符串数组 * 2将字符串转为等长度的int数组 * 3将结果排序 * 4将结果拼成字符串数组 * * */ public class SplitStringAndSort { public static void main(String[] args) { String s ="91 27 46 38 50"; String [] arr=s.split(" ");//切割字符串 int arr1[] =new int [arr.length];//为整数数组分配相等空间 for (int i = 0; i < arr.length; i++) { arr1[i]=Integer.parseInt(arr[i]);//parseInt()方法将字符串数字转为整形数字 } Arrays.sort(arr1);//排序 //对字符串进行拼接,不推荐使用字符串方法,浪费空间 System.out.println("以下是用普通方法对字符串进行拼接"); String str =""; for (int i = 0; i < arr1.length; i++) { if(i==arr1.length-1) { str=str+arr1[i]; }else str=str+arr1[i]+" "; } System.out.println(str); //使用StringBuffer类,不浪费空间,只有一个内存 System.out.println("以下是用StringBuffer类的append()方法对字符串进行拼接"); StringBuffer sb=new StringBuffer(); for (int i = 0; i < arr1.length; i++) { if (i==arr1.length-1) { sb.append(arr1[i]); } else sb.append(arr1[i]+" "); } System.out.println(sb); } }
可以发现,两个方法结果一样,但是方法一费内存,方法啊而不费内存。
7
扫描二维码关注公众号,回复:
7786306 查看本文章