Xử lý chuỗi với Apache Commons Lang 3

1. Khái quát chung

Thư viện Apache Commons Lang 3 cung cấp hỗ trợ cho việc thao tác các lớp lõi của Java API. Hỗ trợ này bao gồm các phương pháp xử lý chuỗi, số, ngày tháng, đồng thời, phản ánh đối tượng và hơn thế nữa.

Ngoài việc cung cấp giới thiệu chung về thư viện, hướng dẫn này trình bày các phương thức của lớp StringUtils được sử dụng để thao tác với các cá thể Chuỗi .

2. Sự phụ thuộc của Maven

Để sử dụng thư viện Commons Lang 3, chỉ cần kéo nó từ kho lưu trữ Maven trung tâm bằng cách sử dụng phụ thuộc sau:

 org.apache.commons commons-lang3 3.5 

Bạn có thể tìm thấy phiên bản mới nhất của thư viện này tại đây.

3. StringUtils

Lớp StringUtils cung cấp các phương thức cho phép toán null -safe trên chuỗi.

Nhiều phương thức của lớp này có các phương thức tương ứng được định nghĩa trong lớp java.lang.String , không phải là null -safe. Tuy nhiên, phần này thay vào đó sẽ tập trung vào một số phương thức không có phương thức tương đương trong lớp String .

4. Phương thức chứa

Các containsAny kiểm tra phương pháp nếu một cho chuỗi chứa bất kỳ ký tự trong tập hợp các ký tự. Tập hợp các ký tự này có thể được chuyển dưới dạng một chuỗi hoặc char varargs.

Đoạn mã sau minh họa việc sử dụng hai phiên bản được nạp chồng của phương pháp này với xác minh kết quả:

String string = "baeldung.com"; boolean contained1 = StringUtils.containsAny(string, 'a', 'b', 'c'); boolean contained2 = StringUtils.containsAny(string, 'x', 'y', 'z'); boolean contained3 = StringUtils.containsAny(string, "abc"); boolean contained4 = StringUtils.containsAny(string, "xyz"); assertTrue(contained1); assertFalse(contained2); assertTrue(contained3); assertFalse(contained4);

5. Phương thức containsIgnoreCase

Các containsIgnoreCase kiểm tra phương pháp nếu một cho chuỗi chứa một chuỗi trong một vụ án cách vô cảm.

Đoạn mã sau xác minh rằng Chuỗi “baeldung.com” bao gồm “BAELDUNG” khi bỏ qua chữ hoa và chữ thường:

String string = "baeldung.com"; boolean contained = StringUtils.containsIgnoreCase(string, "BAELDUNG"); assertTrue(contained);

6. Phương pháp countMatches

Các counterMatches phương pháp đếm bao nhiêu lần một nhân vật hay xuất hiện substring trong một trao String.

Sau đây là một minh chứng của phương pháp này, xác nhận rằng 'w' xuất hiện bốn lần và "com" xuất hiện hai lần trong Chuỗi "chào mừng đến với www.baeldung.com" :

String string = "welcome to www.baeldung.com"; int charNum = StringUtils.countMatches(string, 'w'); int stringNum = StringUtils.countMatches(string, "com"); assertEquals(4, charNum); assertEquals(2, stringNum);

7. Phương pháp bổ sung và ưu tiên

Các appendIfMissingappendIfMissingIgnoreCase phương pháp nối thêm một hậu tố để kết thúc cho chuỗi nếu nó chưa kết thúc với bất kỳ cách thức thông qua trong hậu tố trong một vụ án nhạy cảm và không nhạy cảm tương ứng.

Tương tự, prependIfMissingprependIfMissingIgnoreCase phương pháp thêm vào trước một tiền tố để khởi đầu của một trao Chuỗi nếu nó không bắt đầu với bất kỳ các tiền tố thông qua phòng.

Trong ví dụ sau, appendIfMissingprependIfMissing phương pháp được sử dụng để thêm một hậu tố và tiền tố vào String “baeldung.com” không những sẽ gắn được lặp đi lặp lại:

String string = "baeldung.com"; String stringWithSuffix = StringUtils.appendIfMissing(string, ".com"); String stringWithPrefix = StringUtils.prependIfMissing(string, "www."); assertEquals("baeldung.com", stringWithSuffix); assertEquals("www.baeldung.com", stringWithPrefix);

8. Phương pháp thay đổi trường hợp

Lớp String đã định nghĩa các phương thức để chuyển đổi tất cả các ký tự của một Chuỗi thành chữ hoa hoặc chữ thường. Tiểu mục này chỉ minh họa việc sử dụng các phương pháp thay đổi trường hợp của một Chuỗi theo những cách khác, bao gồm swapCase , viết hoahủy ký tự .

Các swapCase giao dịch hoán đổi phương pháp trường hợp của một String, thay đổi chữ hoa thành chữ thường và chữ thường sang chữ hoa:

String originalString = "baeldung.COM"; String swappedString = StringUtils.swapCase(originalString); assertEquals("BAELDUNG.com", swappedString);

Các lợi dụng cải phương pháp ký tự đầu tiên của một trao chuỗi sang chữ hoa, để lại tất cả các nhân vật còn lại không thay đổi:

String originalString = "baeldung"; String capitalizedString = StringUtils.capitalize(originalString); assertEquals("Baeldung", capitalizedString);

Các uncapitalize phương pháp chuyển đổi ký tự đầu tiên của trao chuỗi thành chữ thường, để lại tất cả các nhân vật còn lại không thay đổi:

String originalString = "Baeldung"; String uncapitalizedString = StringUtils.uncapitalize(originalString); assertEquals("baeldung", uncapitalizedString);

9. Phương pháp đảo ngược

Lớp StringUtils định nghĩa hai phương thức để đảo ngược chuỗi: ngượcđảo ngượcDelimited . Các ngược phương pháp sắp xếp lại tất cả các ký tự của một chuỗi theo thứ tự ngược lại, trong khi reverseDelimited nhóm phương pháp sắp xếp lại các nhân vật, cách nhau bằng một dấu phân cách quy định.

Đoạn mã sau đảo ngược chuỗi “baeldung” và xác nhận kết quả:

String originalString = "baeldung"; String reversedString = StringUtils.reverse(originalString); assertEquals("gnudleab", reversedString);

Với phương thức reverseDelimited , các ký tự được đảo ngược theo nhóm thay vì riêng lẻ:

String originalString = "www.baeldung.com"; String reversedString = StringUtils.reverseDelimited(originalString, '.'); assertEquals("com.baeldung.www", reversedString);

10. Phương thức xoay ()

Phương thức xoay () dịch chuyển các ký tự của một chuỗi một số vị trí theo hình tròn . Đoạn mã dưới đây di chuyển tất cả các ký tự của Chuỗi “baeldung” sang bên phải bốn vị trí và xác minh kết quả:

String originalString = "baeldung"; String rotatedString = StringUtils.rotate(originalString, 4); assertEquals("dungbael", rotatedString);

11. Phương pháp khác biệt

Các khác biệt phương pháp so sánh hai chuỗi, trả lại phần còn lại của thứ hai String, bắt đầu từ vị trí mà nó là khác nhau từ đầu tiên. Đoạn mã sau so sánh hai Chuỗi: “Hướng dẫn Baeldung”“Các khóa học Baeldung” theo cả hai hướng và xác nhận kết quả:

String tutorials = "Baeldung Tutorials"; String courses = "Baeldung Courses"; String diff1 = StringUtils.difference(tutorials, courses); String diff2 = StringUtils.difference(courses, tutorials); assertEquals("Courses", diff1); assertEquals("Tutorials", diff2);

12. Kết luận

Hướng dẫn này giới thiệu cách xử lý Chuỗi trong Apache Commons Lang 3 và xem xét các API chính mà chúng ta có thể sử dụng ngoài lớp thư viện StringUtils .

Như mọi khi, bạn có thể tìm thấy việc triển khai tất cả các ví dụ và đoạn mã được đưa ra ở trên trong dự án GitHub.