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 .