1. Chuỗi con trong Java là gì?

Như ta đã biết chuỗi hay String là là đối tượng được hỗ trợ bên trong một mảng char. Bất cứ khi nào ta thực hiện thay đổi với một chuỗi thì một chuỗi mới sẽ được tạo ra. Chuỗi con ở đây chính là một phần của chuỗi mẹ ban đầu. Chuỗi con còn hay còn được gọi là chuỗi phụ – substring là tập hợp con của chuỗi khác.

Ta cần lưu ý rằng một chuỗi đều được coi là một đối tượng mà vì vậy nó có thể có quyền truy cập và sử dụng tất cả hàm được xây dựng sẵn trong lớp chuỗi. Do đó nếu một hàm nào đó trả về một chuỗi thì ta có quyền sử dụng trực tiếp một hàm nữa ngay sau hàm đó vì chuỗi sẽ trả về một đối tượng mới. Và chuỗi con cũng tương tự như vậy.

Ví dụ:

Ta có một chuỗi là “Học Java tại laptrinhtudau.com”

Ở đây ta có các chuỗi con như: học , Java , laptrinhtudau.com

2. Lấy chuỗi con trong Java

Trong Java có 2 phương thức để lấy chuỗi con là:

  • public String substring(int startIndex): Phương thức này trả về đối tượng chuỗi mới là chuỗi con của chuỗi đã cho tính từ startIndex đã nhập đến cuối cùng.
  • public String substring(int startIndex, int endIndex): Phương thức này trả về đối tượng chuỗi mới là chuỗi con của chuỗi đã cho tính startIndex đến endIndex đã nhập.

Chỉ số index sẽ được tính từ 0 , 1 , 2 , 3 , …

Một ngoại lệ là StringIndexOutOfBoundsException sẽ được ném ra nếu:

  • Chỉ số bắt đầu là giá trị âm
  • Chỉ số kết thúc thấp hơn chỉ số bắt đầu.
  • Chỉ số bắt đầu hoặc kết thúc lớn hơn tổng số ký tự có trong chuỗi.

Ví dụ:

public class Main {
    public static void main(String[] args) {
        String s="laptrinhtudau";    
        System.out.println(s.substring(0,2)); //trả về một chuỗi con
    }
}

Kết quả

la

Trong chuỗi con ở trên, 0 chỉ chữ cái đầu tiên và 2 chỉ chữ cái thứ hai

Ví dụ 2:

public class Main {
   public static void main(String args[]) {
      String s = "Học Java từ con số 0 tại laptrinhtudau.com";
      System.out.println(s.substring(8));   
      System.out.println(s.substring(0, 8));
   }
}

Kết quả

 từ con số 0 tại laptrinhtudau.com
Học Java

3. Các ứng dụng của phương thức chuỗi con

Phương thức chuỗi con có thể dùng để thực hiện một số trích xuất tiền tố hoặc hậu tố. Ví dụ như việc ta có danh sách tên và bắt buộc phải lọc ra tên có tên là “ABC” . Ngoài ra nó cũng giúp ta kiểm trả xem một chuỗi có phải là palindrome hay không.

Ví dụ 1: Lọc ra tên theo yêu cầu

public class Main{  
    public static void main(String argvs[]){  
        String str[] = {  
           "Praveen Kumar",  
           "Yuvraj Singh",  
           "Harbhajan Singh",  
           "Gurjit Singh",  
           "Virat Kohli",  
           "Rohit Sharma",  
           "Sandeep Singh",  
           "Milkha Singh"  
        };  
  
        String surName = "Singh";  
        int surNameSize = surName.length();  
  
        int size = str.length;  
  
        for(int j = 0; j < size; j++){  
            int length = str[j].length();  
            String subStr = str[j].substring(length - surNameSize);  
            if(subStr.equals(surName)){  
                System.out.println(str[j]);  
            }  
        }  
  
    }  
}

Kết quả

Yuvraj Singh
Harbhajan Singh
Gurjit Singh
Sandeep Singh
Milkha Singh

Ví dụ 2: kiểm tra chuỗi có phải palindrome hay không

public class Main{  
    public boolean isPalindrome(String str){  
        int size = str.length();  
   
        if(size == 0 || size == 1){  
            return true;  
        }  
       String f = str.substring(0, 1);  
       String l = str.substring(size - 1);  
       if(l.equals(f)){  
           return isPalindrome(str.substring(1, size - 1));  
       }  
       return false;  
   }  
   public static void main(String argvs[]){  
      Main obj = new Main();  
      String str[] ={  
          "madam",  
          "rock",  
          "eye",  
          "noon",  
          "kill"  
       };  
      int size = str.length;  
  
     for(int j = 0; j < size; j++){  
         if(obj.isPalindrome(str[j])){  
             System.out.println(str[j] + " là một palindrome.");  
         }else{  
            System.out.println(str[j] + "không là một palindrome.");  
           }  
         }  
     }  
}

Kết quả

madam là một palindrome.
rockkhông là một palindrome.
eye là một palindrome.
noon là một palindrome.
killkhông là một palindrome.

4. Phương thức String.split()

Phương thức split() của lớp String có thể được sử dụng để trích xuất một chuỗi con từ một câu. Nó chấp nhận các đối số dưới dạng một biểu thức chính quy(sẽ học biểu thức chính quy ở những bài sau)

Ví dụ:

import java.util.*;  
  
public class Main  
{    
    public static void main(String args[])  
    {    
        String text= new String("lập trình từ đầu, học từ con số 0");  
        String[] sentences = text.split("\\.");  
        System.out.println(Arrays.toString(sentences));  
    }  
}

Kết quả

[lập trình từ đầu, học từ con số 0]

Trong chương trình trên, chúng ta đã sử dụng phương thức split(). Nó chấp nhận một đối số \\ . kiểm tra trong câu và tách chuỗi thành một chuỗi khác. Nó được lưu trữ trong một mảng các câu đối tượng Chuỗi.

5. Ký tự đặc biệt

Bởi vì chuỗi phải được viết trong dấu ngoặc kép, Java sẽ hiểu sai chuỗi này và tạo ra lỗi:

String txt = "Học lập trình tại"laptrinhtudau.com" học lập trình từ con số 0";

Đôi khi ta cũng nhầm lẫn trong dấu ngoặc kép là chuỗi con. Đây là một nhầm lẫn tai hại và gây lỗi cho chương trình chúng ta. Vậy làm cách nào để giải quyết được dấu ngoặc kép trong chuỗi trên? Đơn giản chúng ta chỉ cần sử dụng dấu gạch chéo ngược (\)

Ví dụ:

public class Main {
    public static void main(String[] args) {
        String txt = "Học lập trình tại \"laptrinhtudau.com\" học lập trình từ con số 0";
        System.out.println(txt);
    }
}

Kết quả

Học lập trình tại "laptrinhtudau.com" học lập trình từ con số 0

Ngoài ra chèn một dấu ngoặc kép vào chuỗi bằng cách sử dụng ký tự \”

public class Main {
    public static void main(String[] args) {
        String txt = "It\'s beautiful.";
        System.out.println(txt);
    }
}

Kết quả

It's beautiful

Và chèn một dấu gạch chéo ngược vào chuỗi bằng cách dùng 2 dấu gạch chéo ngược \\

public class Main {
    public static void main(String[] args) {
        String txt = "Học lập trình tại \\ laptrinhtudau.com";
        System.out.println(txt);
    }
}

Kết quả

Học lập trình tại \ laptrinhtudau.com