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

Строковые функции Java – 25+ ДОЛЖНЫ знать методы

Строковые функции Java Класс Java String содержит множество функций для управления строками. Существует множество методов для получения символов и байтов строки

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

Строковые функции Java

  • Класс Java String имеет множество функций для управления строками.
  • Существует множество методов для получения символов и байтов строкового объекта.
  • Существуют методы для разделения строки на массив или для создания подстрок.
  • Поскольку Строка неизменна , исходная строка остается неизменной и возвращается новый экземпляр строки.

Список строковых функций Java

Вот список наиболее важных функций класса String. Список обновлен для выпуска Java 13.

  • длина()
  • isEmpty(), isBlank()
  • Чарат()
  • GetChars(), toCharArray()
  • getBytes()
  • равно(), хэш-код() и equalsIgnoreCase()
  • Значения содержимого()
  • compareTo() и compareToIgnoreCase()
  • StartsWith() и EndsWith()
  • indexOf() и lastIndexOf()
  • подстрока() и подпоследовательность()
  • конкат()
  • совпадения()
  • заменить(), заменить сначала () и заменить все()
  • содержит()
  • раскол()
  • присоединяйтесь()
  • в нижнем регистре() и в верхнем регистре()
  • отделка(), полоса(), ведущая полоса () и задняя полоса()
  • строки()
  • отступ()
  • преобразование()
  • формат()
  • стажер()
  • значение() и copyValueOf()
  • повторите()
  • опишите констебля() и разрешите константу Desc()
  • форматированный(), полосатый () и экранирование перевода()

Давайте рассмотрим эти методы с помощью простых фрагментов кода, запущенных в оболочке.

1. длина()

Метод String length() возвращает длину строкового объекта.

jshell> String s = "Hello Java";
s ==> "Hello Java"
 
jshell> s.length()
$2 ==> 10

2. isEmpty(), isBlank()

Метод String isEmpty() возвращает значение True, если строка пуста, т. е. длина равна 0.

Метод String isBlank() был добавлен в класс String в выпуске Java 11 . Этот метод возвращает значение True, если строка пуста или содержит только пробелы, такие как пробелы и табуляции.

jshell> String emptyStr = "";
emptyStr ==> ""
 
jshell> String whitespacesStr = " \t\t ";
whitespacesStr ==> " \t\t "
 
jshell> emptyStr.isEmpty()
$5 ==> true
 
jshell> whitespacesStr.isEmpty()
$6 ==> false
 
jshell> emptyStr.isBlank()
$7 ==> true
 
jshell> whitespacesStr.isBlank()
$8 ==> true

3. Чарат(внутренний индекс)

Этот метод возвращает символ с заданным индексом. Если индекс выходит за пределы диапазона, Создается исключение StringIndexOutOfBoundsException .

jshell> String s = "Java";
s ==> "Java"
 
jshell> s.charAt(2)
$10 ==> 'v'
 
jshell> s.charAt(20)
|  Exception java.lang.StringIndexOutOfBoundsException: String index out of range: 20
|        at StringLatin1.charAt (StringLatin1.java:48)
|        at String.charAt (String.java:709)
|        at (#11:1)

4. GetChars() и toCharArray()

Метод String GetChars() используется для заполнения массива символов из объекта string в качестве источника. Синтаксис метода таков:

getChars(int srcBegin, int srcEnd, char dst[], int dstBegin)
  1. Параметр srcBegin-это индекс первого символа, который нужно скопировать из строки.
  2. Второй – это индекс после последнего символа в строке для копирования.
  3. Dst [] – это массив символов назначения.
  4. Параметр dstBegin-это индекс смещения в целевом массиве символов.
jshell> String s1 = "12345678";
s1 ==> "12345678"
 
jshell> char[] dest = new char[5];
dest ==> char[5] { '\000', '\000', '\000', '\000', '\000' }
 
jshell> s1.getChars(2, 5, dest, 1)
 
jshell> System.out.println(Arrays.toString(dest));
[, 3, 4, 5, ]

Метод Java String toCharArray() возвращает новый массив символов, созданный из строковых символов.

jshell> String s2 = "12345";
s2 ==> "12345"
 
jshell> s2.toCharArray()
$28 ==> char[10] { '1', '2', '3', '4', '5' }

5. getBytes()

Этот метод возвращает массив байтов, созданный из строки. Существует три версии метода getBytes ().

  1. getBytes() : этот метод декодирует байты, используя системную кодировку набора символов по умолчанию.
  2. getBytes(набор символов) : Набор символов используется для декодирования байтов.
  3. getBytes(Имя кодировки строки) : Имя набора символов используется для получения фактического экземпляра набора символов для декодирования. Если кодировка недопустима, будет выдано исключение UnsupportedEncodingException .
jshell> String s3 = "Hello";
s3 ==> "Hello"
 
jshell> s3.getBytes();
$21 ==> byte[5] { 72, 101, 108, 108, 111 }
 
jshell> import java.nio.charset.StandardCharsets;
 
jshell> s3.getBytes(StandardCharsets.UTF_16);
$22 ==> byte[12] { -2, -1, 0, 72, 0, 101, 0, 108, 0, 108, 0, 111 }
 
jshell> s3.getBytes("UTF-16");
$23 ==> byte[12] { -2, -1, 0, 72, 0, 101, 0, 108, 0, 108, 0, 111 }
 
jshell> s3.getBytes("UTF-8");
$24 ==> byte[5] { 72, 101, 108, 108, 111 }

6. equals(), хэш-код() и equalsIgnoreCase()

Метод String equals(Object obj) возвращает значение true тогда и только тогда, когда объект является строкой и представляет ту же последовательность символов, что и эта строка.

Метод equals() переопределяется из класса объектов. Метод equals() используется в реализациях хэш-таблиц.

jshell> String s4 = "Hello"
s4 ==> "Hello"
 
jshell> s4.equals(new Object())
$26 ==> false
 
jshell> s4.equals("Hello")
$28 ==> true

Метод hashCode() возвращает целочисленное хэш-значение строкового объекта. Он кэшируется при создании строки.

Формула для расчета хэш-кода приведена ниже.

s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]

Здесь s[i] – это i-й символ строки, n – длина строки, а ^ указывает на возведение в степень.

jshell> String s = "Java"
s ==> "Java"
 
jshell> s.hashCode()
$30 ==> 2301506
 
jshell> String s2 = "Java"
s2 ==> "Java"
 
jshell> s2.hashCode()
$32 ==> 2301506
 
jshell> "String".hashCode()
$33 ==> -1808118735

Если вам интересно, почему значение hashCode() отрицательное, это потому, что значение, возвращаемое из формулы, больше максимального значения целого числа. Таким образом, это вызывает переполнение целых чисел, и в этом случае хэш-код может быть отрицательным.

Строка equalsIgnoreCase(строка str) сравнивает эту строку с заданной строкой, игнорируя соображения регистра.

jshell> "Java".equalsIgnoreCase("JAVA")
$35 ==> true
 
jshell> "Java".equalsIgnoreCase("JA")
$36 ==> false

7. contentEquals()

Этот строковый метод сравнивает содержимое строки с объектом CharSequence . Он используется для сравнения строки со значениями объектов StringBuilder и StringBuffer .

jshell> String str = "12345"
str ==> "12345"
 
jshell> StringBuffer sb = new StringBuffer()
sb ==> 
 
jshell> sb.append("12345")
$38 ==> 12345
 
jshell> str.contentEquals(sb)
$39 ==> true
 
jshell> StringBuilder sb1 = new StringBuilder(sb)
sb1 ==> 12345
 
jshell> str.contentEquals(sb1)
$41 ==> true

8. compareTo() и compareToIgnoreCase()

Строка реализует сопоставимый интерфейс . Итак, мы можем сравнить две строки лексикографически, используя метод compareTo ().

Метод compareToIgnoreCase() также выполняет лексикографическое сравнение, игнорируя регистр.

jshell> "Java".compareTo("Java")
$42 ==> 0
 
jshell> "Java".compareTo("Jb")
$43 ==> -1
 
jshell> "Java".compareToIgnoreCase("JAVA")
$44 ==> 0
 
jshell> "Java".compareToIgnoreCase("JB")
$45 ==> -1

9. StartsWith() и EndsWith()

Эти методы используются для проверки того, содержит ли строка префикс или суффикс или нет. Функция starts With() имеет перегруженный метод для предоставления целочисленного значения в качестве индекса смещения.

jshell> "123456".startsWith("123")
$46 ==> true
 
jshell> "123456".startsWith("34")
$47 ==> false
 
jshell> "123456".startsWith("34", 2)
$48 ==> true
 
jshell> "123456".endsWith("456")
$49 ==> true
 
jshell> "123456".endsWith("45")
$50 ==> false

10. indexOf() и lastIndexOf()

В классе String существует четыре перегруженных метода indexOf ().

  1. indexOf(int ch): возвращает первый индекс символа в строке. Если символ отсутствует, то возвращает -1.
  2. indexOf(int ch, int fromIndex): второй параметр указывает индекс, из которого следует искать символ.
  3. indexOf(String str): возвращает индекс первого вхождения подстроки.
  4. indexOf(Строка str, int из индекса): возвращает индекс первого вхождения подстроки, начиная с данного индекса.
jshell> "Java".indexOf('a')
$51 ==> 1
 
jshell> "Java".indexOf('a', 2)
$52 ==> 3
 
jshell> "Java".indexOf("av")
$53 ==> 1
 
jshell> "Java".indexOf("av", 2)
$54 ==> -1

Аналогично, существует четыре перегруженных метода lastIndexOf (). Поведение аналогично, за исключением того, что возвращается последний индекс. Поиск символа или подстроки начинается с конца строки.

  1. Последний индекс(int ch)
  2. lastIndexOf(int ch, int fromIndex): поиск выполняется в обратном направлении, возвращаемый индекс находится в диапазоне от 0 до от индекса.
  3. lastIndexOf(Строка str)
  4. lastIndexOf(Строка str, int из индекса)
jshell> "Java".lastIndexOf('a')
$55 ==> 3
 
jshell> "Java".lastIndexOf('a', 2)
$56 ==> 1
 
jshell> "Java".lastIndexOf("av")
$57 ==> 1
 
jshell> "Java".lastIndexOf("av", 3)
$58 ==> 1

11. подстрока() и подпоследовательность()

Метод Java String substring() используется для создания подстроки из этой строки. Метод подпоследовательности() также создает подстроку и внутренне вызывает метод substring ().

jshell> String str = "Java String"
str ==> "Java String"
 
jshell> str.substring(5)
$60 ==> "String"
 
jshell> str.substring(5, 8)
$61 ==> "Str"
 
jshell> str.subSequence(5, 8)
$62 ==> "Str"

12. конкат()

Метод String concat() объединяет эту строку с заданной строкой и возвращает ее. Исходная строка остается неизменной, и возвращается новая ссылка на объект string.

jshell> "Java".concat("String")
$63 ==> "JavaString"

13. совпадения()

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

jshell> String str = "Java"
str ==> "Java"
 
jshell> str.matches("^J.v.")
$67 ==> true
 
jshell> str.matches("\\D{4}")
$68 ==> true

14. замените(), замените сначала () и замените все()

Эти методы используются для замены части строки заданным символом или подстрокой. Существует четыре метода замены строковых символов.

  1. заменить(чар олдчар, чар Ньючар)
  2. replaceFirst(регулярное выражение строки, замена строки)
  3. replaceAll(регулярное выражение строки, замена строки)
  4. заменить(цель последовательности символов, замена последовательности символов)

15. содержит()

Этот метод возвращает значение true, если строка содержит заданную последовательность символов.

jshell> "Java".contains("av")
$69 ==> true
 
jshell> "Java".contains(new StringBuilder("Ja"))
$70 ==> true

16. разделение()

Этот метод используется для разделения строки вокруг совпадений данного регулярного выражения. Существует два варианта этого метода.

  1. разделение(регулярное выражение строки, ограничение int): Параметр limit определяет количество записей в массиве результирующих строк.
  2. разделение(регулярное выражение строки): возвращает массив строк со всеми подстроками вокруг совпадений регулярного выражения.

Рекомендуемое чтение : Метод разделения строк Java()

17. присоединяйтесь()

Этот статический метод был добавлен в класс String в выпуске Java 8. Он используется для объединения группы строк с заданным разделителем для формирования новой строки. Это очень полезно при создании строки CSV из списка или массива строк.

jshell> String.join(",", "A", "B", "C");
$1 ==> "A,B,C"

Рекомендуемое чтение : Метод соединения строк Java()

18. В нижнем регистре() и в верхнем регистре()

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

jshell> "Java".toUpperCase()
$71 ==> "JAVA"
 
jshell> "JavA".toLowerCase()
$72 ==> "java"
 
jshell> "Java".toUpperCase(Locale.US)
$73 ==> "JAVA"
 
jshell> "JavA".toLowerCase(Locale.UK)
$74 ==> "java"

Рекомендуемые показания :

  • Метод Java String в нижнем регистре()
  • Метод Java String в верхнем регистре()

19. отделка(), полоса(), ведущая полоса () и задняя полоса()

Метод Java String trim() возвращает новую строку после удаления всех начальных и конечных пробелов. Этот метод рассматривает любой символ, кодовая точка которого меньше или равна “U+0020”, как символ пробела.

Метод String strip() был добавлен в класс String в Java 11 релизе. Этот метод использует символ .IsWhiteSpace() метод удаления начальных и конечных пробелов из строки. Это рекомендуемый метод удаления пробелов из строкового объекта.

Методы strip Leading() и strip Trailing() удаляют начальные и конечные пробелы соответственно.

jshell> String str = "  \t Hi  \t"
str ==> "  \t Hi  \t"
 
jshell> str.trim()
$76 ==> "Hi"
 
jshell> str.strip()
$77 ==> "Hi"
 
jshell> str.stripLeading()
$78 ==> "Hi  \t"
 
jshell> str.stripTrailing()
$79 ==> "  \t Hi"

Рекомендуемое чтение : Java 11: Новые методы в классе String

20. строки()

Этот метод возвращает поток строк, извлеченных из этой строки, разделенных терминаторами строк.

jshell> String str = "Hi\nHello\nYes\r\nNo\n";
str ==> "Hi\nHello\nYes\r\nNo\n"
 
jshell> List lines = new ArrayList();
lines ==> []
 
jshell> str.lines().forEach(s -> lines.add(s));
 
jshell> System.out.println(lines);
[Hi, Hello, Yes, No]

21. отступ()

Этот метод используется для отступа каждой строки в строке и нормализации символов новой строки. Он был добавлен в String API в версии Java 12.

Рекомендуемое чтение: Строковые методы Java 12

22. трансформация()

Этот метод используется для применения функции к этой строке. Функция должна принимать один строковый аргумент и возвращать объект. Некоторые из способов использования в реальном мире заключаются в создании списка строк из строки CSV и преобразовании строки в список объектов. Этот служебный метод был добавлен в String API в версии Java 12.

23. формат()

Метод Java String format() возвращает отформатированную строку с использованием заданного формата и аргументов. Он вдохновлен методом sprintf() языка Си.

24. стажер()

Этот метод возвращает каноническое представление строки. Это собственный метод. Когда строка создается с помощью оператора new, она создается вне пула строк. Метод intern() перемещает строку в пул и возвращает ссылку.

Рекомендуемое чтение: Метод Java String intern()

25. значение() и значение copyValueOf()

Метод Java String valueOf() используется для получения строкового представления аргумента. Существуют различные перегруженные методы valueOf (), которые принимают примитивные типы данных, массив символов и объект. Методы String valueOf() являются статическими.

26. повторите()

Метод Java String repeat() возвращает новую строку, значением которой является объединение этой строки заданное количество раз. Этот метод был добавлен в класс String в выпуске Java 11.

jshell> String str = "123"
str ==> "123"

jshell> str.repeat(3)
$9 ==> "123123123"

27. опишите констебля() и разрешите константу Desc()

Эти методы добавлены для поддержки API констант для класса String. Эти методы были добавлены в класс String в выпуске Java 12.

jshell> String s = "Hi"
s ==> "Hi"
 
jshell> s.describeConstable()
$85 ==> Optional[Hi]
 
jshell> import java.lang.invoke.MethodHandles;
 
jshell> s.resolveConstantDesc(MethodHandles.lookup());
$87 ==> "Hi"

Ссылка : Документы Java 13 String API