Автор оригинала: 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)
- Параметр srcBegin-это индекс первого символа, который нужно скопировать из строки.
- Второй – это индекс после последнего символа в строке для копирования.
- Dst [] – это массив символов назначения.
- Параметр 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 ().
- getBytes() : этот метод декодирует байты, используя системную кодировку набора символов по умолчанию.
- getBytes(набор символов) : Набор символов используется для декодирования байтов.
- 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 ().
- indexOf(int ch): возвращает первый индекс символа в строке. Если символ отсутствует, то возвращает -1.
- indexOf(int ch, int fromIndex): второй параметр указывает индекс, из которого следует искать символ.
- indexOf(String str): возвращает индекс первого вхождения подстроки.
- 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 (). Поведение аналогично, за исключением того, что возвращается последний индекс. Поиск символа или подстроки начинается с конца строки.
- Последний индекс(int ch)
- lastIndexOf(int ch, int fromIndex): поиск выполняется в обратном направлении, возвращаемый индекс находится в диапазоне от 0 до от индекса.
- lastIndexOf(Строка str)
- 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. замените(), замените сначала () и замените все()
Эти методы используются для замены части строки заданным символом или подстрокой. Существует четыре метода замены строковых символов.
- заменить(чар олдчар, чар Ньючар)
- replaceFirst(регулярное выражение строки, замена строки)
- replaceAll(регулярное выражение строки, замена строки)
- заменить(цель последовательности символов, замена последовательности символов)
15. содержит()
Этот метод возвращает значение true, если строка содержит заданную последовательность символов.
jshell> "Java".contains("av") $69 ==> true jshell> "Java".contains(new StringBuilder("Ja")) $70 ==> true
16. разделение()
Этот метод используется для разделения строки вокруг совпадений данного регулярного выражения. Существует два варианта этого метода.
- разделение(регулярное выражение строки, ограничение int): Параметр limit определяет количество записей в массиве результирующих строк.
- разделение(регулярное выражение строки): возвращает массив строк со всеми подстроками вокруг совпадений регулярного выражения.
Рекомендуемое чтение : Метод разделения строк 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