Дополнение строки пробелами или нулями слева в Java

Научитесь делать left pad строки в Java, чтобы сделать ее фиксированной длины. Например, если у нас есть строка длиной 10, и мы хотим увеличить ее длину до 15 – добавив пробелы слева. Аналогично, мы можем left pad числа, добавив нули слева.

Следующий пример демонстрирует эффект добавления левого дополнения к строке или числам.

howtodoinjava.com //no paddinghowtodoinjava.com //left padding of 4 spaces....howtodoinjava.com //left padding of 4 dots0000howtodoinjava.com //left padding of 4 zeros

1. Дополнение строки слева с помощью StringUtils.leftPad()

Чтобы добавить левый отступ, наиболее простой и легкий способ — использовать метод StringUtils.leftPad(). Класс StringUtils предоставляет множество полезных методов для манипулирования строками и их изменения для получения желаемых эффектов.

Используйте StringUtils.rightPad() для дополнения строки справа в Java.

1.1.Мавен

Начните с добавления в проект последней версии библиотеки Apache common-lang3.

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version></dependency>

1.2 Синтаксис

Метод leftPad() — это перегруженный метод со следующими параметрами:

  • str – строка для заполнения. Может быть null. Она не выбрасывает NullPointerException, а возвращает null, если передан аргумент null.
  • размер – размер для заполнения, т.е. общая длина результирующей строки.
  • padStr – строка для дополнения.
  • padChar – символ для дополнения.
public static String leftPad(str, size);public static String leftPad(str, size, padStr);public static String leftPad(str, size, padChar);

1.3. Левая панель с пробелами

В следующей программе нам осталось дополнить строку «howtodoinjava». Второй оператор не добавляет никакого дополнения, поскольку длина входной строки уже больше 10.

Assertions.assertEquals(null, StringUtils.leftPad(null, 10, " "));Assertions.assertEquals("howtodoinjava", StringUtils.leftPad("howtodoinjava", 10, " "));Assertions.assertEquals(" howtodoinjava", StringUtils.leftPad("howtodoinjava", 20, " "));

1.4. Левая панель с нулями

Следующая программа Java использует метод StringUtils.leftPad() для дополнения числа нулями слева, добавляя начальные нули к строке.

Assertions.assertEquals("0123456789", StringUtils.leftPad("123456789", 10, "0"));Assertions.assertEquals("0000000789", StringUtils.leftPad("789", 10, "0"));Assertions.assertEquals("0000056789", StringUtils.leftPad("56789", 10, "0")); 

2. Дополнение строки слева с помощью Strings.padStart()

Класс Strings является частью библиотеки Google Guava и предоставляет методы утилит для изменения строк. Начните с добавления последней версии Guava в проект.

<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>31.1-jre</version></dependency>

Теперь мы можем использовать API Strings.padStart() для добавления левого отступа.

Assertions.assertEquals("0123456789", Strings.padStart("123456789", 10, '0'));Assertions.assertEquals(" howtodoinjava", Strings.padStart("howtodoinjava", 20, ' '));

3. Использование простого Java

Мы можем создать собственный API для заполнения заданной строки предоставленным символом или строкой заполнения. Это дает нам гибкость для дальнейшей настройки логики. Например, мы можем решить, что делать, если какой-либо параметр равен нулю.

Следующий метод использует API String.repeat() для создания левого поля, а затем добавляет входную строку для построения финальной строки.

public static String leftPad(String input, int length, String padStr) {if(input == null || padStr == null){return null;}if(input.length() >= length){return input;}int padLength = length - input.length();StringBuilder paddedString = new StringBuilder();paddedString.append(padStr.repeat(padLength));paddedString.append(input);return paddedString.toString();}

Давайте проверим функцию:

Assertions.assertEquals("0123456789", leftPad("123456789", 10, "0"));Assertions.assertEquals(" howtodoinjava", leftPad("howtodoinjava", 20, " "));

4. Заключение

В этом коротком уроке Java мы научились дополнять строку пробелами(или любым символом дополнения) слева до фиксированной длины. Мы также дополнили число нулями слева. Мы научились использовать классы StringUtils, Strings и создали собственное решение для дополнения слева.

Ссылка: StringUtils Java Doc

Исходный код на Github

Прокрутить вверх