Pad a String bằng Zeros hoặc Spaces trong Java

1. Khái quát chung

Trong hướng dẫn ngắn này, chúng ta sẽ xem cách chèn một Chuỗi trong Java. Chúng tôi sẽ tập trung chủ yếu vào một pad bên trái, có nghĩa là chúng tôi sẽ thêm các khoảng trắng hoặc số 0 ở đầu cho đến khi nó đạt đến độ dài mong muốn.

Cách tiếp cận cho Chuỗi được đệm bên phải rất giống nhau, vì vậy chúng tôi sẽ chỉ chỉ ra những điểm khác biệt.

2. Đặt một chuỗi bằng các phương pháp tùy chỉnh

Lớp String trong Java không cung cấp một phương thức thuận tiện để đệm, vì vậy chúng ta hãy tự tạo một vài phương thức. Tuy nhiên, trước tiên, hãy đặt một số kỳ vọng:

assertEquals(" 123456", padLeftZeros("123456", 10)); assertEquals("0000123456", padLeftZeros("123456", 10));

2.1. Sử dụng StringBuilder

Chúng ta có thể đạt được điều này với StringBuilder và một số logic thủ tục:

public String padLeftZeros(String inputString, int length) { if (inputString.length() >= length) { return inputString; } StringBuilder sb = new StringBuilder(); while (sb.length() < length - inputString.length()) { sb.append('0'); } sb.append(inputString); return sb.toString(); }

Ở đây chúng ta có thể thấy rằng nếu độ dài của văn bản gốc bằng hoặc lớn hơn độ dài mong muốn, chúng ta sẽ trả về phiên bản không thay đổi của nó. Nếu không, chúng tôi tạo một Chuỗi mới , bắt đầu bằng dấu cách và thêm chuỗi ban đầu.

Tất nhiên, nếu chúng ta muốn đệm bằng một ký tự khác, chúng ta có thể sử dụng nó thay vì số 0 .

Tương tự như vậy, nếu chúng ta muốn pad bên phải, chúng ta chỉ cần tạo StringBuilder (inputString) mới thay thế và sau đó thêm các khoảng trắng vào cuối.

2.2. Sử dụng chuỗi con

Một cách khác để thực hiện phần đệm bên trái là tạo một Chuỗi có độ dài mong muốn chỉ chứa các ký tự đệm và sau đó sử dụng phương thức substring () :

StringBuilder sb = new StringBuilder(); for (int i = 0; i < length; i++) { sb.append(' '); } return sb.substring(inputString.length()) + inputString;

2.3. Sử dụng String.format

Và cuối cùng, kể từ Java 5, chúng ta có thể sử dụng String .format () :

return String.format("%1$" + length + "s", inputString).replace(' ', '0');

Chúng ta nên lưu ý rằng theo mặc định, hoạt động đệm sẽ được thực hiện bằng cách sử dụng dấu cách. Đó là lý do tại sao chúng ta cần sử dụng phương thức Replace () nếu chúng ta muốn đệm bằng số 0 hoặc bất kỳ ký tự nào khác.

Đối với pad bên phải, chúng tôi chỉ cần sử dụng một cờ khác: % 1 $ -

3. Tạo chuỗi bằng thư viện

Và, có những thư viện bên ngoài đã cung cấp các chức năng đệm.

3.1. Apache Commons Lang

Apache Commons Lang cung cấp một gói các lớp tiện ích Java. Một trong những cái phổ biến nhất là StringUtils .

Để sử dụng nó, chúng tôi sẽ cần đưa nó vào dự án của mình bằng cách thêm phần phụ thuộc của nó vào tệp pom.xml của chúng tôi :

 org.apache.commons commons-lang3 3.8.1 

Và sau đó chúng tôi chuyển inputStringđộ dài , giống như các phương thức chúng tôi đã tạo. Chúng ta cũng có thể chuyển ký tự đệm:

assertEquals(" 123456", StringUtils.leftPad("123456", 10)); assertEquals("0000123456", StringUtils.leftPad("123456", 10, "0"));

Một lần nữa, Chuỗi sẽ được đệm bằng khoảng trắng theo mặc định hoặc chúng ta cần đặt một ký tự đệm khác một cách rõ ràng.

Ngoài ra còn có các phương thức rightPad () tương ứng .

Để khám phá thêm các tính năng của Apache Commons Lang 3, bạn có thể xem hướng dẫn giới thiệu của chúng tôi. Nếu bạn muốn xem các cách khác của thao tác trên chuỗi bằng cách sử dụng lớp StringUtils , hãy tham khảo bài viết này .

3.2. Google Guava

Một thư viện khác mà chúng ta có thể sử dụng là Guava của Google. Tất nhiên, trước tiên chúng ta cần thêm nó vào dự án bằng cách thêm phụ thuộc của nó:

 com.google.guava guava 27.0-jre 

Và sau đó sử dụng lớp Strings :

assertEquals(" 123456", Strings.padStart("123456", 10, ' ')); assertEquals("0000123456", Strings.padStart("123456", 10, '0'));

Không có ký tự đệm mặc định trong phương thức này, vì vậy chúng ta cần phải chuyển nó mỗi lần.

Để sang phải pad, chúng ta có thể sử dụng phương thức padEnd () .

Thư viện Guava cung cấp nhiều tính năng hơn và chúng tôi đã đề cập đến rất nhiều tính năng trong số đó. Bạn có thể xem các bài viết liên quan đến Ổi ở đây .

4. Kết luận

Trong bài viết nhanh này, chúng tôi đã minh họa cách chúng tôi có thể đệm một Chuỗi trong Java. Chúng tôi đã trình bày các ví dụ bằng cách sử dụng các triển khai của riêng chúng tôi hoặc các thư viện hiện có.

Như thường lệ, một mã nguồn hoàn chỉnh có thể được tìm thấy trên GitHub.