Kiểu chuỗi 

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)
substring(int begin, int end)
trả về trích xuất chuỗi con từ begin đến cuối hoặc end
toLowerCase()/toUpperCasetrả 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

%cký tự
%dsố thập phân
%esố thực dạng khoa học (3.000000e+11)
%fsố thực
%isố nguyên
%osố cơ số 8
%schuỗi
%usố thập phân không dấu
%xsố cơ số 16
%%biểu diễn %
\%biểu diễn %
\nKý 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'