正则表达式_2_字符串切割

可以用正则表达式将字符串切割,有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

猜你喜欢

转载自www.cnblogs.com/tkg1314/p/11819395.html
今日推荐