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

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

1. обзор

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

Подход для правого дополненногоString очень похож, поэтому мы только укажем на различия.

2. Дополните aString пользовательскими методами

Класс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();
}

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

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

Точно так же, если мы хотим правую площадку, нам просто нужно вместо этого сделатьnewStringBuilder(inputString), а затем добавить пробелы в конце.

2.2. Используяsubstring

Другой способ сделать левый отступ -create a String with the desired length that contains only pad characters and then use the substring() method:

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. ДобавитьString с помощью библиотек

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

3.1. Apache Commons Lang

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

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


    org.apache.commons
    commons-lang3
    3.8.1

And then we pass the inputString and the length, just like the methods we created. Мы также можем передать символ заполнения:

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

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

Также существуют соответствующие методыrightPad().

To explore more features of the Apache Commons Lang 3, you can check out our introductory tutorial. Если вы хотите увидетьother ways of the String manipulation using the StringUtils class, please refer to this article.

3.2. Google Guava

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


    com.google.guava
    guava
    27.0-jre

And then use the Strings class:

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

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

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

The Guava library offers much more features and we have covered a lot of them. You can look here for the Guava related articles.

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

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

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