Mục lục
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