Showing posts with label String. Show all posts
Showing posts with label String. Show all posts

Wednesday, December 30, 2015

[Java] Cắt String trong Java - Split String in Java.

Phương thức split() được sử dụng để cắt một String thành các String nhỏ dựa trên ký tự phân chia. Phương thức này có 2 biến thể.
*String[] split(String kytuphanchia): Kết quả trả về là một mảng string sau khi cắt input String đầu vào theo 'kytuphanchia'.
*String[] split(String kytuphanchia, int gioihan): Kết quả trả về là một mảng String có kích thước bằng gioihan. Ví dụ: split('kytuphanchia',3) sẽ trả về một mảng String có kích thước là 3 mặc dù String input đầu vào sau khi split theo 'kytuphanchia' có thể có kích thước lớn hơn 3. Khi gioihan là một số âm mảng array String trả về sẽ chứa tất cả các String có thể cắt được từ input String đầu vào. Khi goihan là 0 thì mảng array String trả về sẽ chứa không chứa ký tự string rỗng ở cuối. Nghe có vẻ khó hiểu nhưng bài viết sẽ phân tích về gioihan là số âm, gioihan bằng 0 ở ví dụ phía dưới.
Chương trình cài đặt:
package simplecodecjava.blogspot.com;

public class SplitExample {
 public static void main(String args[]) {
  String str = new String("28/12/2015/ /simplecodecjava.blogspot.com");
  System.out.println("split(String kytuphanchia):");
  String array1[] = str.split("/");
  for (String temp : array1) {
   System.out.println(temp);
  }
  System.out.println("split(String kytuphanchia, int gioihan) với gioihan=2:");
  String array2[] = str.split("/", 2);
  for (String temp : array2) {
   System.out.println(temp);
  }
  System.out.println("split(String kytuphanchia, int gioihan) với gioihan=0:");
  String array3[] = str.split("/", 0);
  for (String temp : array3) {
   System.out.println(temp);
  }
  System.out.println("split(String kytuphanchia, int gioihan) với gioihan=-5:");
  String array4[] = str.split("/", -5);
  for (String temp : array4) {
   System.out.println(temp);
  }
 }
}
Output:
split(String kytuphanchia):
28
12
2015
 
simplecodecjava.blogspot.com
split(String kytuphanchia, int gioihan) với gioihan=2:
28
12/2015/ /simplecodecjava.blogspot.com
split(String kytuphanchia, int gioihan) với gioihan=0:
28
12
2015
 
simplecodecjava.blogspot.com
split(String kytuphanchia, int gioihan) với gioihan=-5:
28
12
2015
 
simplecodecjava.blogspot.com
Kết quả của chương trình trên.
* Với trường hợp gioihan = 2 thì mảng String đầu ra có kích thước là 2. Do đó mà kết quả in ra {'28','12/2015/ /simplecodecjava.blogspot.com'}
* Với trường hợp gioihan = -5 và gioihan=0 cho cùng một kết quả {'28','12','2015','','simplecodecjava.blogspot.com'}
* Nếu thay input String đầu vào:
String str = new String("28/12/2015/ /simplecodecjava.blogspot.com//");
Ta sẽ thấy kết quả chương trình có sự khác biệt giữa gioihan=-5 và gioihan=0:
split(String kytuphanchia):
28
12
2015
 
simplecodecjava.blogspot.com
split(String kytuphanchia, int gioihan) với gioihan=2:
28
12/2015/ /simplecodecjava.blogspot.com//
split(String kytuphanchia, int gioihan) với gioihan=0:
28
12
2015
 
simplecodecjava.blogspot.com
split(String kytuphanchia, int gioihan) với gioihan=-5:
28
12
2015
 
simplecodecjava.blogspot.com


* gioihan = -5: input string đầu vào đã được cắt ra thành {'28','12','2015',' ','simplecodecjava.blogspot.com',' ',' '}.
* gioihan = 0: input string đầu vào đã được cắt ra thành {'28','12','2015',' ','simplecodecjava.blogspot.com'}.
Mảng string thu được sau khi cắt với gioihan = -5 so với gioihan = 0 nhiều hơn 2 string rỗng bởi 2 ký tự cuối {//} trong chuỗi input String đầu vào cũng bị cắt ra và tạo thành 2 String rỗng.

Chú ý:
*Khi kytuphanchia là những ký tự đặc biệt. thì cần phải thêm '\\' vào đằng  trước.
Phân chia theo dấu '.' được viết thành: string.split('\\.');
Phân chia theo dấu '^' được viết thành: string.split('\\^');
Phân chia theo khoảng trắng ' ' được viết thành: string.split('\\s');
Phân chia theo dấu '|' được viết thành: string.split('\\|');
* Khi muốn cắt String theo chữ số dùng '\\d+'
String str = new String("abc123def456ghj");
  System.out.println("split(String kytuphanchia):");
  String array1[] = str.split("\\d+");
  for (String temp : array1) {
   System.out.println(temp);
  }
Output:
split(String kytuphanchia):
abc
def
ghj

* Khi muốn cắt String theo chữ cái dùng '[a-zA-Z]+'
String str = new String("0abc123def456ghj");
  System.out.println("split(String kytuphanchia):");
  String array1[] = str.split("[a-zA-Z]+");
  for (String temp : array1) {
   System.out.println(temp);
  }
Output:
split(String kytuphanchia):
0
123
456