Обкладіть рядок нулями або пробілами на Java

1. Огляд

У цьому короткому посібнику ми побачимо, як вставити рядок у Java. Ми зосередимося головним чином на лівій подушці, це означає, що ми будемо додавати пробіли або нулі до неї, поки вона не досягне потрібної довжини.

Підхід до правильної підбитої рядка дуже схожий, тому ми лише вкажемо на відмінності.

2. Вставте рядок за допомогою нестандартних методів

Клас String в Java не забезпечує зручного методу для заповнення, тому давайте створимо кілька методів самостійно. По-перше, давайте встановимо деякі очікування:

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

2.1. Використання StringBuilder

Ми можемо досягти цього за допомогою StringBuilder та деякої процедурної логіки:

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(); }

Тут ми бачимо, що якщо довжина оригінального тексту дорівнює або перевищує бажану довжину, ми повертаємо незмінну його версію. В іншому випадку ми створюємо новий рядок, починаючи з пробілів і додаючи оригінальний.

Звичайно, якщо ми хотіли набити інший символ, ми могли б просто використовувати його замість 0 .

Подібним чином, якщо ми хочемо зробити праву панель, нам потрібно просто зробити новий StringBuilder (inputString), а потім додати пробіли в кінці.

2.2. Використання підрядка

Інший спосіб зробити ліве заповнення - це створити рядок бажаної довжини, який містить лише символи майданчика, а потім використовувати метод substring () :

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

2.3. Використання String.format

І, нарешті, починаючи з Java 5, ми можемо використовувати String .format () :

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

Слід зазначити, що за замовчуванням операція заповнення буде виконуватися з використанням пробілів. Ось чому нам потрібно використовувати метод replace (), якщо ми хочемо заповнити нулями або будь-яким іншим символом.

Для правильної панелі нам просто потрібно використовувати інший прапор: % 1 $ -

3. Прокладіть рядок за допомогою бібліотек

І є зовнішні бібліотеки, які вже пропонують функціональні можливості заповнення.

3.1. Apache Commons Lang

Apache Commons Lang пропонує пакет утилітних класів Java. Одним з найпопулярніших є StringUtils .

Щоб використовувати його, нам потрібно буде включити його в наш проект, додавши його залежність до нашого файлу pom.xml :

 org.apache.commons commons-lang3 3.8.1 

А потім передаємо inputString і довжину , як і методи, які ми створили. Ми також можемо передати символ заповнення:

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

Знову ж таки, рядок за замовчуванням буде заповнений пробілами, або нам потрібно явно встановити інший символ панелі.

Існують також відповідні методи rightPad () .

Щоб вивчити більше можливостей Apache Commons Lang 3, ви можете переглянути наш вступний посібник. Якщо ви хочете побачити інші способи маніпулювання рядком за допомогою класу StringUtils , зверніться до цієї статті .

3.2. Google Гуава

Ще однією бібліотекою, якою ми можемо скористатися, є гуава Google. Звичайно, спочатку нам потрібно додати його до проекту, додавши його залежність:

 com.google.guava guava 27.0-jre 

А потім використовуйте клас Strings :

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

У цьому методі немає символу клавіатури за замовчуванням, тому нам потрібно щоразу передавати його.

Для правої панелі можна використовувати метод padEnd () .

Бібліотека Гуави пропонує набагато більше можливостей, і ми охопили багато з них. Тут ви можете переглянути статті, пов’язані з Гуавою .

4. Висновок

У цій короткій статті ми проілюстрували, як можна прокласти рядок на Java. Ми представили приклади, використовуючи власні реалізації або існуючі бібліотеки.

Як завжди, повний вихідний код можна знайти на GitHub.