Quên StringUtils đi, Java có String API mới giúp bạn code tối ưu hơn đó

Java là một ngôn ngữ lập trình vô cùng thú vị và luôn có những nhiều điều hay ho và cải tiến sau mỗi bản cập nhật mới. Một số công cụ mới đã được giới thiệu trong class String
để đáp ứng tốt hơn nhu cầu phát triển và cải thiện hiệu suất của anh em lập trình.
Để có thể sử dụng StringUtils
, một phiền toái nhỏ đó là phải thêm một dependency của org.apache.commons
. Điều đó khá bất tiện, vì nhiều lúc, mình chỉ cần dùng một hàm nhỏ của bộ StringUtils
thôi, nhưng lại phải import cả một class to bự. Hãy cùng Sydexa.com tìm hiểu xem một số phương thức mới và làm thế nào chúng có thể thay thế vai trò của StringUtil
nhỉ?
Sau đây là các phương thức có sẵn đã được thêm vào trên các phiên bản Java hiện nay
Java 11:
repeat(): trả về một chuỗi mới, được tạo thành bằng cách lặp lại chuỗi gốc một số lần đã chỉ định.
isBlank(): kiểm tra xem chuỗi có phải là một chuỗi ký tự trắng không, tức là có độ dài bằng 0 hoặc chỉ chứa các ký tự khoảng trắng.
lines(): trả về một luồng các chuỗi được phân tách bởi các dòng.
strip(): trả về một chuỗi mới được tạo ra bằng cách loại bỏ các dấu cách ở đầu và cuối chuỗi gốc.
stripLeading(): trả về một chuỗi mới, chuỗi đó là chuỗi gốc sau khi loại bỏ dấu cách ở đầu.
stripTrailing(): trả về một chuỗi mới, chuỗi đó là chuỗi gốc sau khi loại bỏ các dấu cách ở cuối.
Java 15:
formatted(): định dạng chuỗi với các đối số đã chỉ định và trả về chuỗi đã được định dạng.
translateEscapes(): chuyển đổi các "Escape sequence" Java thành các ký tự tương ứng và trả về chuỗi đã chuyển đổi.
transform(): Phương thức này áp dụng một hàm cho một chuỗi và trả về kết quả của hàm đó.
repeat
Muốn tạo một chuỗi mới bằng cách lặp lại một chuỗi mẫu? Đừng lo đã có công cụ repeat mới
String str = "Sydexa";
String repeatedStr = StringUtils.repeat(str, 3);
System.out.println(repeatedStr);
String repeatedStr2 = str.repeat(5);
System.out.println(repeatedStr2);
//result
//SydexaSydexaSydexa
//SydexaSydexaSydexaSydexaSydexa
isBlank
Muốn kiểm tra một String rỗng hay không quá đơn giản với isBlank
String str1 = "";
String str2 = " ";
String str3 = " \t ";
System.out.println(StringUtils.isBlank(str1));
System.out.println(StringUtils.isBlank(str2));
System.out.println(StringUtils.isBlank(str3));
System.out.println(str1.isBlank());
System.out.println(str2.isBlank());
System.out.println(str3.isBlank());
//result
//true
//true
//true
//true
//true
//true
lines
Tách riêng từng chuỗi của các dòng với lines
String str = "Hello\nSydexa";
Arrays.stream(StringUtils.split(str, "\n")).forEach(System.out::println);
Stream<String> lines = str.lines();
lines.forEach(System.out::println);
//result
//Hello
//Sydexa
//Hello
//Sydexa
strip
Việc validate lại dữ liệu xóa đi các khoảng trống thừa đầu cuối đã được strip sử lý một cách nhanh gọn
String str1 = " abc ";
String str2 = "\t def \n";
System.out.println(StringUtils.strip(str1));
System.out.println(StringUtils.strip(str2));
System.out.println(str1.strip());
System.out.println(str2.strip());
//result
//abc
//def
//abc
//def
Nếu vậy chỉ muốn xóa khoảng trắng ở đầu hoặc cuối thì sao nhỉ? Hmm bộ đôi stripLeading
/stripTrailing
sẽ giúp bạn.
String str1 = " abc ";
String str2 = " def ";
System.out.println(StringUtils.stripEnd(str1, null));
System.out.println(StringUtils.stripEnd(str2, null));
System.out.println(str1.stripTrailing());
System.out.println(str2.stripTrailing());
System.out.println(StringUtils.stripStart(str1, null));
System.out.println(StringUtils.stripStart(str2, null));
System.out.println(str1.stripLeading());
System.out.println(str2.stripLeading());
// result
// abc
// def
// abc
// def
//abc
//def
//abc
//def
formatted
Muốn chèn các giá trị vào các vị trí có sẵn trong mẫu câu đã có formatted
String str = "My name is %s, I'm %d years old.";
String formattedStr = str.formatted( "Malvin", 30);
System.out.println(formattedStr);
//result
//My name is Malvin, I'm 30 years old.
translateEscapes
Muỗi tách chuỗi bằng các "Escape sequence" như là:
\n
: Xuống dòng (newline).\t
: Khoảng cách ngang (tab).\"
: Dấu ngoặc kép.\'
: Dấu ngoặc đơn.\\
: Dấu gạch chéo ngược.
Hãy thử dùng translateEscapes
xem sao.
String str = "Hello\\nWorld\\nJava";
String translatedStr = str.translateEscapes();
System.out.println(translatedStr);
//result
//Hello
//World
//Java
transform
Muốn áp dụng nhanh một hàm số ngắn gọn mới cho chuỗi thì sao nhỉ?
String str = "Hello World";
String result = str.transform(s -> s + " Java!");
System.out.println(result);
//result
//Hello World Java!
Đó là tất cả những gì bạn có thể áp dụng ngay cho dự án hiện tại, giúp cho code gọn gàng và tối ưu hơn.