Phương thức substring() trả về kiểu String tương ứng với chuỗi gốc bắt đầu từ beginIndex đến endIndex (không bao gồm endIndex). Nếu không chỉ định endIndex, mặc định là độ dài chuỗi. Vì làm việc với String, chỉ số bắt đầu từ '0'.
Cú pháp
public String substring(int beginIndex) public String substring(int beginIndex, int endIndex)
- beginIndex: chỉ số bắt đầu cắt chuỗi (0-based).
- endIndex: chỉ số kết thúc cắt chuỗi (không bao gồm ký tự tại vị trí này).
Trả về String là phần con của chuỗi gốc. Ném IndexOutOfBoundsException nếu beginIndex âm hoặc lớn hơn độ dài chuỗi, hoặc endIndex > length(), hoặc beginIndex > endIndex.
Ví dụ minh họa
public class StringSubstringTest{
public static void main(String[] args) {
String str = "Welcome to Tutorials Point";
System.out.println(str.substring(5)); // "me to Tutorials Point"
System.out.println(str.substring(2, 5)); // "lco"
str.substring(6); // không gán, str không đổi (String immutable)
System.out.println("str value: " + str); // "Welcome to Tutorials Point"
String str1 = str.substring(5);
System.out.println("str1 value: " + str1); // "me to Tutorials Point"
}
}
Kết quả đầu ra
me to Tutorials Point lco str value: Welcome to Tutorials Point str1 value: me to Tutorials Point
Lưu ý quan trọng
- String bất biến (immutable) –
substring()trả về chuỗi mới, chuỗi gốc không thay đổi. - Java 7+:
substring()tạo char array mới (copy), tránh rò rỉ bộ nhớ do chia sẻ backing array như Java 6. - Đếm chỉ số:
"Welcome"→ W(0) e(1) l(2) c(3) o(4) m(5) e(6)...
Bảng ví dụ nhanh
| Code | Kết quả | Giải thích |
|---|---|---|
"Hello".substring(1) | "ello" | Từ index 1 đến hết |
"Hello".substring(1, 4) | "ell" | Index 1,2,3 (4 không bao gồm) |
"Hello".substring(0, 5) | "Hello" | Cả chuỗi |
"Hello".substring(5) | "" | Rỗng (index = length) |