Рубрики
Без рубрики

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

Узнайте, как заполнить строку в Java определенным символом.

Автор оригинала: baeldung.

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

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

Конечно, если бы мы хотели pad с другим символом, мы могли бы просто использовать его вместо 0 .

Аналогично, если мы хотим править страницу, нам просто нужно сделать new | StringBuilder(входная строка) вместо этого, а затем добавить пробелы в конце.

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');

Следует отметить, что по умолчанию операция заполнения будет выполняться с использованием пробелов. Вот почему нам нужно использовать заменять() метод, если мы хотим заполнить нули или любой другой символ.

Для правильной площадки нам просто нужно использовать другой флаг: %1$-

3. Дополните строку с помощью библиотек

Кроме того, существуют внешние библиотеки, которые уже предлагают функции заполнения.

3.1. Apache Commons Lang

Apache Commons Lang предоставляет пакет служебных классов Java. Одним из самых популярных является StringUtils .

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


    org.apache.commons
    commons-lang3
    3.11

А затем мы передаем входную строку и длину , как и созданные нами методы. Мы также можем передать символ заполнения:

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

Опять же, строка | по умолчанию будет заполнена пробелами, или нам нужно явно установить другой символ pad.

Существуют также соответствующие методы right Pad () .

Чтобы узнать больше о функциях Apache Commons Lang3, вы можете ознакомиться с нашим вводным руководством . Если вы хотите увидеть другие способы манипулирования строкой с помощью класса StringUtils , пожалуйста, обратитесь к этой статье .

3.2. Google Guava

Еще одна библиотека, которую мы можем использовать, – это Google Guava . Конечно, сначала нам нужно добавить его в проект, добавив его зависимость :


    com.google.guava
    guava
    27.0-jre

А затем используйте Strings class :

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

В этом методе нет символа pad по умолчанию, поэтому нам нужно передавать его каждый раз.

Для правой панели мы можем использовать pad И() метод.

Библиотека Гуавы предлагает гораздо больше функций, и мы рассмотрели многие из них. Вы можете посмотреть здесь статьи, связанные с гуавой .

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

В этой краткой статье мы проиллюстрировали, как мы можем заполнить строку | в Java. Мы представили примеры, используя наши собственные реализации или существующие библиотеки.

Как обычно, полный исходный код можно найти на GitHub .