Chuỗi trong Java
Một đối tượng String là chuỗi ký tự dùng để lưu dữ các ký tự theo một dãy có thứ tự, số ký tự lưu được không hạn chế, có thể biểu diễn chuỗi trên một dòng với các ký tự trong dấu nháy kép ""
, như "Hello"
là một chuỗi dài 5 ký tự.
Chuỗi trong Java là một đối tượng, nên khi khởi tạo được chuỗi thì đối tượng này cung cấp một số phương thức để làm việc với chuỗi, có một số cách khởi tạo chuỗi:
//Khai báo biến chuỗi, khởi tạo ngay giá trị cho chuỗi String s = "xuanthulab.net"; //Tạo đối tượng chuỗi với toán tử new String mgs = new String("Học Java"); //Có một mảng ký tự char data[] = {'a', 'b', 'c'}; String nString = new String(data); //Khởi tạo chuỗi, từ một mảng ký tự = abc
Các phương thức trên chuỗi
Đối tượng chuỗi thực chất là bản hiện của lớp String
của thư viện Java. Có nhiều phương thức trên chuỗi, danh sách đầy đủ các phương thức tại String Class – Methods, ví dụ phương thức lenth()
trả về độ dài (số ký tự) của chuỗi.
String stringexp = "Học Java"; int len = stringexp.length(); System.out.println( "Chiều dài chuỗi là : " + len ); //Chiều dài chuỗi là : 8
Dưới đây là một số phương thức hay dùng
equals(s) | kiểm tra hai chuỗi giống nhau không (chú ý, toán tử so sánh == kiểm tra hai đối tượng cùng trỏ đến một chuỗi không) |
length() | Trả về chiều dài chuỗi |
concat() | Nối hai chuỗi thành một chuỗi mới, ví dụ:String string1 = “Học “; String string2 = “Java”; String string3 = string1.concat(string2); //string3: “Học Java” Có thể nhanh chóng nối hai chuỗi với toán tử +String string3 = string1 + string2 |
charAt(int index) | trả về ký tự tại vị trí index trong chuỗi, ký tự đầu tiên chỉ số index là 0 |
equalsIgnoreCase(s) | kiểm tra hai chuỗi giống nhau (không phân biệt chữ hoa/thường) |
length() | trả về chiều dài chuỗi |
replace(old,new) | tìm và thay thế ký tự, chuỗi |
substring(int begin) | trả về trích xuất chuỗi con từ begin đến cuối hoặc end |
toLowerCase()/toUpperCase | trả về chuỗi mới bằng cách đổi chữ Hoa thành thường (hoặc thường thành Hoa) |
trim() | ngắt bỏ khoảng trắng ở đầu và cuỗi |
toCharArray() | lấy mảng các ký tự |
contains(s) | kiểm tra có chứa một chuỗi con |
IsEmpty() | kiểm tra chuỗi có rỗng không. |
split(separator) | chia chuỗi thành mảng với điểm ngắt là ký tự separator. Ví dụ tách chuỗi thành các từ str.split(" "); |
Tạo ra chuỗi định dạng với printf, format
Sử dụng phương thức tĩnh String.format() để tạo ra chuỗi định dạng, hoặc System.out.printf() cũng tạo chuỗi định dạng nhưng kết quả xuất ra stream (ví dụ console) – còn format thì trả về để sử dụng lại.
Cú pháp format (printf):
String.format("format-string" [, arg1, arg2, … ] );
"format-string"
là chuỗi định dạng, trong đó có chứa các định dạng, và chuỗi tạo ra bằng cách điền tham số arg
theo thứ tự tương ứng vào định dạng.
Ví dụ
String s = String.format("Học %s trong %d tuần", "Java", 2); //s giờ bằng: "Học Java trong 2 tuần";
“Học %s trong %d tuần” là chuỗi định dạng, trong đó định dạng thứ nhất là %s
cho biết chỗ này sẽ điền chuỗi vào (tức tham số thứ nhất Java), định dạng thứ 2 là %d
cho biết chỗ này sẽ điền số (điền tham số thứ hai là số 2)
Một số định dạng trong chuỗi
%c | ký tự |
%d | số thập phân |
%e | số thực dạng khoa học (3.000000e+11) |
%f | số thực |
%i | số nguyên |
%o | số cơ số 8 |
%s | chuỗi |
%u | số thập phân không dấu |
%x | số cơ số 16 |
%% | biểu diễn % |
\% | biểu diễn % |
\n | Ký tự xuống dòng |
Chỉ ra chiều rộng định dạng với số nguyên
Trong chuỗi định dạng %d
nếu bạn thêm một giá trị số vào ví dụ %5d
có nghĩa khu vực đó sẽ để khoảng trống tối thiểu 5 ký tự khoảng trắng để điền số, số sẽ được căn về bên trái. Ví dụ 34
. Nếu giá trị âm như %-5d
sẽ căn về phải.
Điền số 0 vào trước
Tương tự phần trên, nếu chỉ ra định dạng theo kiểu %05d
thì nếu số nhỏ hơn 5 ký tự, thì phần bên phải tự động điền thành 0. Như tham số là 34 thì kết quả sẽ là 00034
Số chữ số sau dấu chấm
Các định dạng số thực %f
có thể thiết lập số chữ số sau dấu chấm, ví dụ %.1f
, cũng như thiết lập độ rộng tối thiểu phần nguyên giống ở trên.
printf("'%.1f'", 10.3456); //'10.3' printf("'%.2f'", 10.3456); //'10.35' printf("'%8.2f'", 10.3456); //' 10.35' printf("'%08.2f'", 10.3456); //'00010.35'
Ví dụ tổng hợp
public class StringMethodsDemo { public static void main(String[] args) { String targetString = "Java is fun to learn"; String s1= "JAVA"; String s2= "Java"; String s3 = " Hello Java "; System.out.println("Char at index 2(third position): " + targetString.charAt(2)); System.out.println("After Concat: "+ targetString.concat("-Enjoy-")); System.out.println("Checking equals ignoring case: " +s2.equalsIgnoreCase(s1)); System.out.println("Checking equals with case: " +s2.equals(s1)); System.out.println("Checking Length: "+ targetString.length()); System.out.println("Replace function: "+ targetString.replace("fun", "easy")); System.out.println("SubString of targetString: "+ targetString.substring(8)); System.out.println("SubString of targetString: "+ targetString.substring(8, 12)); System.out.println("Converting to lower case: "+ targetString.toLowerCase()); System.out.println("Converting to upper case: "+ targetString.toUpperCase()); System.out.println("Triming string: " + s3.trim()); System.out.println("searching s1 in targetString: " + targetString.contains(s1)); System.out.println("searching s2 in targetString: " + targetString.contains(s2)); char [] charArray = s2.toCharArray(); System.out.println("Size of char array: " + charArray.length); System.out.println("Printing last element of array: " + charArray[3]); } }
Kết quả