可以用正則表達式將字符串切割,有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