Trong Java, để định dạng một chuỗi bao gồm những giá trị gì, những giá trị này được lấy từ đâu, các bạn có thể sử dụng phương thức static format() của đối tượng String cùng với format mà các bạn muốn. Để định dạng và in một chuỗi ra console, các bạn có thể sử dụng phương thức System.out.printf() cũng cùng với format mà các bạn muốn. Cụ thể như thế nào? Chúng ta sẽ cùng nhau tìm hiểu trong bài viết này các bạn nhé!
Đầu tiên, mình sẽ lấy chuỗi sau để làm ví dụ “Welcome to Huong Dan Java”. Nếu muốn in chuỗi này ra console các bạn có thể sử dụng dòng code sau:
1 |
System.out.println("Welcome to Huong Dan Java"); |
Kết quả:
Rất đơn giản phải không các bạn?
Nếu giá trị của chuỗi “Huong Dan Java” từ chuỗi trên được lấy từ một biến, các bạn có thể viết lại như sau:
1 2 |
String name = "Huong Dan Java"; System.out.println("Welcome to " + name); |
Thế nhưng nếu chuỗi của bạn dài như sau “Welcome to Huong Dan Java. My name is Khanh” với chuỗi “Khanh” cũng được lấy từ một biến, thì việc cộng chuỗi như sau sẽ rất rối lắm:
1 2 3 |
String site = "Huong Dan Java"; String name = "Khanh"; System.out.println("Welcome to " + site + ". My name is " + name); |
Đúng không các bạn?
Các bạn có thể định dạng chuỗi này để nhìn rõ ràng như sau:
1 2 3 |
String site = "Huong Dan Java"; String name = "Khanh"; System.out.printf("Welcome to %s. My name is %s", site, name); |
Tham số đầu tiên của phương thức printf() là “Welcome to %s. My name is %s”, nó là một chuỗi ký tự đã được format.
Ký tự “%s” trong tham số đầu tiên này sẽ được thay thế bằng các biến kiểu dữ liệu String được khai báo theo sau tham số này. Chúng ta có 2 ký tự “%s” thì phía sau chúng ta sẽ cần khai báo 2 biến kiểu dữ liệu String, “site” và “name”.
Các bạn có thể thấy code chúng ta sẽ dễ nhìn hơn so với việc nối chuỗi ở trên.
Ký tự “%s” còn cho phép chúng ta right padding và left padding giá trị của biến thay thế. Nói nôm na thì right padding sẽ hiển thị giá trị của biến thay thế với chiều dài đúng số mà chúng ta khai báo. Nếu chuỗi thay thế lớn hơn chiều dài mà chúng ta muốn thì kết quả sẽ hiển thị chuỗi đó. Nếu chuỗi nhỏ hơn chiều dài mà chúng ta muốn, chuỗi của chúng ta sẽ dịch về bên trái, phần còn thiếu của chiều dài sẽ được thay thế bằng các ký tự mà chúng ta muốn. Ví dụ, mình muốn right padding với ký tự thay thế là space cho giá trị của biến site ở trên, mình sẽ viết code như sau:
1 2 3 4 5 6 7 8 9 |
package com.huongdanjava.javaexample; public class JavaExample { public static void main(String[] args) { String site = "Huong Dan Java"; String name = "Khanh"; System.out.printf("Welcome to %-20s. My name is %s", site, name); } } |
Kết quả:
20 là chiều dài mình muốn giá trị của biến site được hiển thị, để right padding, chúng ta sẽ thêm dấu “-” nữa. Như các bạn thấy, chuỗi “Huong Dan Java” của mình sẽ được hiển thị với các space sau nó. Right padding là padding on the right.
Left padding thì ngược lại với right padding. Chuỗi của chúng ta sẽ dịch về bên phải, phần còn dư sẽ hiển thị bằng cách ký tự thay thế. Với ký tự space thì các bạn có thể viết như sau:
1 2 3 4 5 6 7 8 9 |
package com.huongdanjava.javaexample; public class JavaExample { public static void main(String[] args) { String site = "Huong Dan Java"; String name = "Khanh"; System.out.printf("Welcome to %20s. My name is %s", site, name); } } |
Kết quả:
Với biến có kiểu giá trị là number thì chúng ta sẽ sử dụng ký tự “%d” thay vì “%s”.
Ví dụ, mình có chuỗi sau:
1 2 3 4 5 6 7 8 9 |
package com.huongdanjava.javaexample; public class JavaExample { public static void main(String[] args) { int age = 36; System.out.printf("I'm %d years old", age); } } |
%d sẽ được thay thế bằng giá trị của biến age.
Kết quả:
Nếu các bạn muốn hiển thị số tuổi ở định dạng 3 chữ số, nếu giá trị của biến không đủ 3 chữ số thì thêm các số 0 ở đầu hay còn gọi là leading zeros thì có thể viết code như sau:
1 2 3 4 5 6 7 8 9 |
package com.huongdanjava.javaexample; public class JavaExample { public static void main(String[] args) { int age = 36; System.out.printf("I'm %03d years old", age); } } |
Kết quả:
Các bạn muốn thêm bao nhiêu leading zero thì chỉ cần tăng hoặc giảm số 3 trong “%03d” là được.