Cắt chuỗi tĩnh và động trong java

Trong quá trình thao tác với String trong java đôi lúc chúng ta cần cắt chuỗi theo một ký tự cụ thể như dấu gạch ngang “-” hoặc theo một khuôn mẫu nào đó. String hỗ trợ cho chúng ta cả hai phương thức trên. Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu về các cách cắt chuỗi trong java nhé.

Split method

Split method được sử dụng để cắt chuỗi trong java và trả về một mảng các String sau khi được cắt.

Cú pháp

public String split(String regex)

public String split(String regex, int limit)

Parameter

regex: Biểu thức regular expression để cắt chuỗi.

limit: Kích thước tối đã của mảng trả về.

Cắt chuỗi tĩnh trong java

Như mình đề cập về hàm split() ở trên thì nó luôn luôn nhận vào một chuỗi regex. Vậy làm sao để cắt tĩnh theo một ký tự cố định đây?

Bí ẩn nằm sau bên trong split() nó sẽ tiền xử lý để kiểm tra xem tham số truyền vào có đúng là chuỗi regex hay không? Nếu không thì nội tại bên trong nó sẽ gọi hàm substring() và cắt dựa vào chuỗi được truyền vào.

Ví dụ: Cho chuỗi share-programming-net, cắt chuỗi theo ký tự “-“

class Main {
    public static void main(String args[]) {
        String s = "share-programming-net";

        String[] splits = s.split("-");
        for (String item : splits)
            System.out.println(item);

    }
}

Output

share
programming
net

Áp dụng limit

class Main {
    public static void main(String args[]) {
        String s = "share-programming-net";

        String[] splits = s.split("-", 2);
        for (String item : splits)
            System.out.println(item);

    }
}

Output:

share
programming-net

Như các bạn thấy mình giới hạn kích thước của mảng trả về là 2 nên nó chỉ cắt được 1 lần là không còn chỗ chứa nữa.

Note: Có thể xem limit – 1 là số lần được cắt chuỗi

Cắt chuỗi động trong java

Để cắt chuỗi động hay theo một khuôn mẫu thì bạn cần áp dụng java regex. Dưới đây là một số ví dụ

Ví dụ 1: Mình có một chuỗi là tên trang web mình thế nhưng không hiểu vì sao nó lại lẫn các ký số vào, và bây giờ mình cần loại bỏ các chữ số đó ra khởi chuỗi “share214programming4214124net”

class Main {
    public static void main(String args[]) {
        String s = "share214programming4214124.net";

        String[] splits = s.split("\\d+");

        StringBuilder stringBuilder = new StringBuilder();


        for (String item : splits)
            stringBuilder.append(item);

        System.out.println(stringBuilder.toString());

    }
}

Output: shareprogramming.net

Ví dụ 2: Cho chuỗi str, loại bỏ 3 ký tự ‘xxx’ liền nhau.

class Main {
    public static void main(String args[]) {
        String s = "shareproxxxgramminxxxg.nexxxt";

        String[] splits = s.split("[xxx]");

        StringBuilder stringBuilder = new StringBuilder();

        for (String item: splits)
            stringBuilder.append(item);
        System.out.println(stringBuilder.toString());

    }
}

Output: shareprogramming.net

PatternSyntaxException trong String 

Nếu bạn cắt chuỗi mà chuỗi regex truyền vào không hợp lệ thì sẽ bị java nèm lỗi Pattern SyntaxException. Ví dụ như bạn dùng các ký tự Quantifiers regex như “*, +, ?” hay thiếu dấu đóng mở ngoặc như “{“, “[” etc.

class Main {
    public static void main(String args[]) {
        String s = "Welcome*to";
        s.split("*");
    }
}

Output: PatternSyntaxException

Nguồn tham khảo

https://www.baeldung.com/string/split

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x