Libraries - DmitryGontarenko/usefultricks GitHub Wiki
Данная библиотека помогает в работе над строками.
Все ее методы имеют проверку на null.
- Dependencies
- Checking for Empty and Blank
- Equals
- Contains
- Case Changing
- Checking case
- Appending and Prepending
- Reverse
- Count Matches
- Rotate
- Difference
- Stripping and Trimming
- startsWith, endsWith
- indexOf
- substring
- left, right, mid
- split, join
- remove
- replace
- leftPad, rightPad, center
- repeat
- defaultString
Maven
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8</version>
</dependency>
С помощью методов isEmpty
и isNotEmpty
, а также методов, которые принимают последовательность строк - isAllEmpty
, isAnyEmpty
и isNoneEmpty
, можно проверить строку на null. Данные методы вернут true, если переданная строка равна null или не содержит символов.
StringUtils.isEmpty("") // true
StringUtils.isAllEmpty(null, "") // true
StringUtils.isAnyEmpty("hello", "") // true
StringUtils.isNotEmpty("hello") // true
StringUtils.isNoneEmpty("hello", "country") // true
Методы isBlank
и isNotBlank
проверяют, содержит ли переданная строка пустое значение:
StringUtils.isBlank(" ") // true
StringUtils.isNotBlank("hello") // true
Методы equals
и equalsAny
сранивают одну строку с другой (или с набором строк):
StringUtils.equals("Cosmos", "Cosmos") // true
StringUtils.equalsAny("Cosmos", "Cosmos", "Space") // true
StringUtils.equalsIgnoreCase("Cosmos", "COSMOS") // true
StringUtils.equalsAnyIgnoreCase("Cosmos", "COSMOS", "SPACE") // true
Методы contains
, containsAny
и containsNone
проверяют, содержит ли строка какой-либо символ или подстроку из переданного набора:
String cosmos = "cosmos.com";
StringUtils.contains(cosmos, "c") // true
StringUtils.containsAny(cosmos, "c", "s", "h") // true
StringUtils.containsNone(cosmos, "h") // true
StringUtils.containsIgnoreCase(cosmos, "COSMOS") // true
С помощью методов upperCase
, lowerCase
, swapCase
, capitalize
и uncapitalize
можно менять регистр переданной строки:
StringUtils.upperCase("cosmos") // COSMOS
StringUtils.lowerCase("COSMOS") // cosmos
StringUtils.swapCase("cosmos.COM") // COSMOS.com
StringUtils.capitalize("cosmos") // Cosmos
StringUtils.uncapitalize("Cosmos") // cosmos
С помощью методов isAllLowerCase
, isAllUpperCase
и isMixedCase
можно проверить регистр переданной строки:
StringUtils.isAllLowerCase("city") // true
StringUtils.isAllUpperCase("CITY") // true
StringUtils.isMixedCase("City") // true
Метод appendIfMissing
добавляет суффикс, если строка не заканчивается одним из переданных суффиксов.
Аналогично, метод prependIfMissing
доавляет префикс к началу заданной строки.
StringUtils.appendIfMissing("cosmos.com", ".com") // cosmos.com
StringUtils.prependIfMissing("cosmos.com", "www.") // www.cosmos.com
StringUtils.appendIfMissingIgnoreCase("cosmos.COM", ".com") // cosmos.COM
StringUtils.prependIfMissingIgnoreCase(WWW.cosmos, "www.") // WWW.cosmos.com
Метод reverse
определяет обратный порядок символов в строке:
StringUtils.reverse("dell") // lled
Метод reverseDelimited
меняет порядок групп строк по указанному разделителю:
StringUtils.reverseDelimited("www.dell.com", '.') // com.dell.www
Метод countMatches
подсчитывает, сколько раз символ или подстрока встречаются в переданной строке:
StringUtils.countMatches("cosmos.com", "os") // 2
Метод rotate
сдвигает символы переданной строки на указанную позицию вправо:
StringUtils.rotate("abc", 1) // // cab
Метод difference
сравнивает две строки и возвращает остаток второй строки, начиная с позиции, где она отличается от первой:
StringUtils.difference("This color is white", "This color is orange") // orange
Метод trim
удаляет из начала и конца строки лишнии пробелы и управляющии символы.
Данный метод делегирует функцию trim()
в String и добавляет обработку на null.
StringUtils.trim("\n Cosmos ") // Cosmos
Метод strip
удаляет указанный символ из начала и конца строки:
StringUtils.strip("+++Cosmos+++", "+") // Cosmos
С помощью методов startsWith
, endsWith
и startsWithAny
, endsWithAny
можно проверить наличие префикса или суффикса в строке:
StringUtils.startsWith("cosmos.com", "cosmo") // true
StringUtils.endsWith("cosmos.com", ".com") // true
StringUtils.startsWithAny("cosmos.com", "cosmo", "mars") // true
StringUtils.endsWithAny("cosmos.com", ".com", ".ru") // true
Метод indexOf
возвращает индекс первого результата для указанной подстроки или -1, если она не встречается в строке.
Метод lastIndexOf
работает аналогично, только возвращает индекс для последнего найденного результата.
StringUtils.indexOf("cosmos.com", "c") // 0
StringUtils.lastIndexOf("cosmos.com", "c") // 7
Метод substring
возвращает подстроку из указанной строки. Для этого указывается индекс начала (и конца) строки:
StringUtils.substring("cosmos.com", 3) // mos.com
StringUtils.substring("cosmos.com", 3, 6) // mos
С помощью методов substringBefore
и substringAfter
можно получить подстроку до или после указанного разделителя (вернется первый результат):
StringUtils.substringBefore("www.cosmos.com", ".") // www
StringUtils.substringAfter("www.cosmos.com", ".") // cosmos.com
С помощью методов substringBeforeLast
и substringAfterLast
можно получить подстроку до или после указанного разделителя (вернется последний результат):
StringUtils.substringBeforeLast("www.cosmos.com", ".") // www.cosmos
StringUtils.substringAfterLast("www.cosmos.com", ".") // com
Метод left
возвращает крайние левые символы строки в указанном количестве:
StringUtils.left("cosmos.com", 3) // cos
Метод right
возвращает крайние правые символы строки в указанном количестве:
StringUtils.right("cosmos.com", 3) // com
С помощью mid
можно получить подстроку из любого места строки. Для этого необходимо указать индекс первого символа и количество возвращаемых символов:
StringUtils.mid("cosmos.com", 3, 7) // mos.com
Метод split
разделяет строку с помощью указанного разделителя и помещает в массив строк:
String[] splitArray = StringUtils.split("www.cosmos.com", "."); // [www, cosmos, com]
Метод join
объединяет элементы массива через указанный разделитель в строку:
String joinString = StringUtils.join(splitArray, "."); // www.cosmos.com
Метод remove
удаляет из строки все указанные подстроки.
Метод removeStart
удаляет подстроку, только если она находится в начале строки (не путать с первым результатом).
Метод removeEnd
удаляет подстроку, только если она находится в конце строки.
StringUtils.remove("/cosmos.com/", "/") // cosmos.com
StringUtils.removeStart("/cosmos.com/", "/") // cosmos.com/
StringUtils.removeEnd("/cosmos.com/", "/") // /cosmos.com
Метод replace
находит и заменяет указанную подстроку в исходной строке:
StringUtils.replace("cosmos.com", "com", "ru") // cosmos.ru
С помощью методов leftPad
, rightPad
и center
можно задавать отступы влево, вправо или по центру строки:
StringUtils.leftPad("cosmos.com", 12) // " cosmos.com"
StringUtils.rightPad("cosmos.com", 12) // "cosmos.com "
StringUtils.center("cosmos.com", 12) // " cosmos.com "
С помощью метода repeat
можно продублировать строку указанное количество раз:
StringUtils.repeat("cosmos.com", 3) // cosmos.comcosmos.comcosmos.com
StringUtils.repeat("cosmos.com", ", ",3) // cosmos.com, cosmos.com, cosmos.com
Метод defaultString
вернет либо переданную строку, либо пустое значение "", если переданная строка будет содержать null:
String text = null;
StringUtils.defaultString(text); // ""
Apache CollectionUtils представляет собой набор служебных методов для общих операций, которые охватывают широкий спектр вариантов использования и помогают избежать написания стандартного кода.
- Dependencies
- isEmpty
- isEqual
- Adding Only Non-Null Elements
- Collating Lists
- Intersection of Collections
- Subtracting Collections
- Union of Collections
Maven
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
С помощью методов CollectionUtils.isEmpty()
и CollectionUtils.isNotEmpty()
можно проверять коллекцию на null:
CollectionUtils.isEmpty(Arrays.asList()); // true
CollectionUtils.isNotEmpty(Arrays.asList("Hello")); // true
Метод CollectionUtils.isEqualCollection()
сравнивает две коллекции по размеру, а затем по содержимому:
List<String> stringListOne = Arrays.asList("Mazda", "BMW");
List<String> stringListTwo = Arrays.asList("BMW", "Mazda");
CollectionUtils.isEqualCollection(stringListOne, stringListTwo); // true
Метод CollectionUtils.addIgnoreNull()
добавляет в коллекцию только ненулевые значения. Первый аргумент - сама коллекция, второй - объект для вставки:
List<String> stringList = new ArrayList<>();
CollectionUtils.addIgnoreNull(stringList, "hello");
CollectionUtils.addIgnoreNull(stringList, null);
System.out.println(stringList); // [hello]
Метод CollectionUtils.collate()
объединяет две коллекции (без сортировки).
С помощью дополнительного аргумента можно исключить наличие дубликатов.
List<String> stringListOne = Arrays.asList("A", "B", "B");
List<String> stringListTwo = Arrays.asList("D", "C");
CollectionUtils.collate(stringListOne, stringListTwo); // [A, B, B, D, C]
CollectionUtils.collate(stringListOne, stringListTwo, false); // [A, B, D, C]
Метод CollectionUtils.isSubCollection()
проверяет, является ли содержимое первой коллекции - частью содержимого второй коллекции:
List<Integer> intListOne = Arrays.asList(2, 1);
List<Integer> intListTwo = Arrays.asList(1, 2, 3, 4, 5);
CollectionUtils.isSubCollection(intListOne, intListTwo); // true
Метод CollectionUtils.intersection()
объединяет две коллекции и содержит только те значения, которые встречаются в обоих коллекциях:
List<Integer> intListOne = Arrays.asList(2, 1);
List<Integer> intListTwo = Arrays.asList(1, 2, 3, 4, 5);
CollectionUtils.intersection(intListOne, intListTwo); // [1, 2]
Метод CollectionUtils.subtract
объединяет две коллекции и содержит только те значения, которые есть в первой коллекции, но нет во второй:
List<Integer> intListOne = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> intListTwo = Arrays.asList(1, 2, 3);
CollectionUtils.subtract(intListOne , intListTwo); // [4, 5]
Метод CollectionUtils.union()
объединяет две коллекции, но будет при этом содержать только уникальные значения:
List<Integer> intListOne = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> intListTwo = Arrays.asList(1, 2, 3);
CollectionUtils.union(intListOne , intListTwo) // [1, 2, 3, 4, 5]
Данная библиотека предоставляет собой служебные методы для работы с логическими примитивами и логическими объектами.
Maven
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.10</version>
</dependency>
Методы isTrue
, isFalse
и isNotTrue
,isNotFalse
проверяют переданное логическое значение на true/false, при передачи null всегда будут возвращать false:
BooleanUtils.isTrue(true) // true
BooleanUtils.isFalse(false) // true
BooleanUtils.isNotTrue(false) // true
BooleanUtils.isNotFalse(true) // true
Метод negate
вернет противоположное переданному логическое значение:
BooleanUtils.negate(false) // true
Методы toStringOnOff
, toStringTrueFalse
и toStringYesNo
конвертируют переданное логическое значение и возвращают его в соответствующем формате:
BooleanUtils.toStringOnOff(true); // on
BooleanUtils.toStringTrueFalse(true); // true
BooleanUtils.toStringYesNo(true); // yes
Данная библиотека предоставляет служебные методы для работы с массивами.
Maven
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.10</version>
</dependency>
С помощью методов add
и addAll
можно добавить новый элемент в конец массива. Метод копирует переданный массив и возвращает новый, с переданными элементами:
int[] oldArray = {1, 2, 3};
int[] newArrayOne = ArrayUtils.add(oldArray, 4); // 1, 2, 3, 4
int[] newArrayTwo = ArrayUtils.addAll(oldArray, 4, 5, 6); // // 1, 2, 3, 4, 5, 6
Метод addFirst
копирует указанный массив и добавляет элемент в начало нового массива:
int[] oldArray = {1, 2, 3};
int[] newArray = ArrayUtils.addFirst(oldArray, 0); // 0, 1, 2, 3
Метод insert
копирует указанный массив и вставляет элементы в новый массив по заданному индексу (начиная с нуля):
int[] oldArray = {1, 2, 3};
int[] newArray = ArrayUtils.insert(0, oldArray, 1); // 1, 1, 2, 3
Методы remove
и removeAll
удаляют элементы из переданного массива по индексу. Метод копирует переданный массив и возвращает новый, где будут удалены указанные элементы:
int[] oldArray = {1, 2, 3};
int[] newArrayOne = ArrayUtils.remove(oldArray, 2); // 1, 2
int[] newArrayTwo = ArrayUtils.removeAll(oldArray, 1, 2); // 1
Методы removeElement
и removeElements
удаляют переданное значение из заданного массива, но будет удален только первый результат поиска. Если элемент в массиве не найден, операция удаления игнарируется и создания исключения не происходит.
Метод копирует переданный массив и возвращает новый, где будет удалено указанное значение:
int[] oldArray = {1, 2, 3};
int[] newArrayOne = ArrayUtils.removeElement(oldArray, 3); // 1, 2
int[] newArrayTwo = ArrayUtils.removeElements(oldArray, 1, 2); // 3
Метод removeAllOccurences
удаляет переданное значение из заданного массива, но будут удалены все результаты поиска:
int[] oldArray = {1, 2, 3, 3};
int[] newArray = ArrayUtils.removeAllOccurences(oldArray, 3); // 1, 2
Метод contains
проверяет, существует ли значение в переданном массиве:
int[] oldArray = {1, 2, 3, 3};
ArrayUtils.contains(oldArray, 3) // true
Метод subarray
возвращает новый массив, который будет содержать только элементы в пределах указанного диапазона:
int[] oldArray = {1, 2, 3, 4, 5};
ArrayUtils.subarray(oldArray, 3, 5) // 2, 3
Метод shift
сдвигает элементы массива по заданному значению, этот метод вносит изменения в указанный массив:
int[] oldArray = {1, 2, 3};
ArrayUtils.shift(oldArray, 1); // 3, 1, 2
Метод reverse
задает обратный порядок элементов в массиве (можно указать диапазон), этот метод вносит изменения в указанный массив:
int[] oldArray = {1, 2, 3};
ArrayUtils.reverse(oldArray); // 3, 2, 1
Метод clone
клонирует указанный массив:
int[] oldArray = {1, 2, 3};
int[] cloneArray = ArrayUtils.clone(oldArray); // 1, 2, 3
Методы isEmpty
и isNotEmpty
проверяют переданный массив на пустоту или null:
int[] oldArray = {};
ArrayUtils.isEmpty(oldArray) // true
ArrayUtils.isNotEmpty(oldArray) // false
Метод isSameLength
сравнивает два массива по длинне:
int[] arrayFirst = {1, 2, 3};
int[] arraySecond = {1, 2, 3};
ArrayUtils.isSameLength(arrayFirst, arraySecond); // true