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
.
Точно так же, если мы хотим заполнить правую часть, нам просто нужно вместо этого сделать new
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 Ланг
Apache Commons Lang предоставляет пакет служебных классов Java. Одним из самых популярных является StringUtils
.
Чтобы использовать его, нам нужно включить его в наш проект, добавив его зависимость в наш файл pom.xml
:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
А затем мы передаем inputString
и длину
, как и в созданных нами методах. Мы также можем передать символ заполнения:
assertEquals(" 123456", StringUtils.leftPad("123456", 10));
assertEquals("0000123456", StringUtils.leftPad("123456", 10, "0"));
Опять же, строка
по умолчанию будет дополнена пробелами, или нам нужно явно установить другой символ заполнения.
Существуют также соответствующие методы rightPad() .
Чтобы изучить дополнительные возможности Apache Commons Lang 3, вы можете ознакомиться с нашим вводным руководством . Если вы хотите увидеть другие способы манипуляции со строками с помощью класса
StringUtils
, обратитесь к этой статье .
3.2. Google Гуава
Еще одна библиотека, которую мы можем использовать, — это Google Guava . Конечно, сначала нам нужно добавить его в проект, добавив его зависимость :
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version>
</dependency>
А затем используйте класс Strings
:
assertEquals(" 123456", Strings.padStart("123456", 10, ' '));
assertEquals("0000123456", Strings.padStart("123456", 10, '0'));
В этом методе нет символа заполнения по умолчанию, поэтому нам нужно передавать его каждый раз.
Для правой панели мы можем использовать метод padEnd()
.
Библиотека Guava предлагает гораздо больше функций, и мы рассмотрели многие из них. Вы можете найти здесь статьи, связанные с гуавой .
4. Вывод
В этой быстрой статье мы показали, как мы можем заполнить строку
в Java. Мы представили примеры с использованием наших собственных реализаций или существующих библиотек.
Как обычно, полный исходный код можно найти на GitHub .