Тип данных Java String использует последовательность символов (типы данных char) для хранения всех видов текстовых данных. Как один из наиболее широко используемых типов данных, строки часто становятся предметом вопросов на собеседованиях по программированию на Java из-за проблем манипулирования строками, будь то обращение строк, преобразование, разделение строк или извлечение подстрок.
Когда дело доходит до Java, у нас есть доступ к ряду строковых методов, которые являются частью класса String. В этом руководстве представлены различные примеры кода и пошаговые руководства для встроенного метода подстроки Java.substring() для извлечения подстроки Java.
Примечание. Методы, которые мы рассматриваем в этой статье, были написаны на Java 11.
- Как извлечь подстроку Java
- Как использовать метод Java.substring()
- Синтаксис для Java.substring()
- Пример подстроки Java с использованием значений индекса
- Как напечатать часть строки в Java с помощью.indexOf()
- Синтаксис для.indexOf()
- Метод подстроки Java с использованием.lastIndexOf()
- Синтаксис для.lastIndexOf()
- Заключение
Как извлечь подстроку Java
Подстроки представляют собой упорядоченную последовательность символов, которую мы можем извлечь из объекта Java String. Из-за свойства неизменности типа данных string нам придется хранить любую подстроку в Java, которую мы извлекаем из существующего объекта String, в новой переменной String.
Например: если у нас есть строка Java : «Изучите Java на Hackr.io», мы могли бы извлечь подстроку «Hackr.io». Для этого нам нужно сохранить его в новом объекте String, а это означает, что мы не изменяем исходный String. Это применимо к любому секвенированному подразделу нашей исходной строки: мы могли бы извлечь «Lear», «Java», «on Hac» и т. д.
В Java у нас есть доступ к встроенному методу.substring() как части класса Java String. И, к счастью для нас, этот метод очень прост в использовании, поскольку для него требуются только аргументы начального и конечного индекса. Результатом является ограниченная часть исходной строки в новом объекте String, а именно Substring.
Другой способ извлечения подстрок в Java — использование встроенного метода.split() (также являющегося частью класса Java String ). Этот метод разбивает строку на одну или несколько подстрок, разделенных разделительным символом (пробел, запятая, символьное значение и т. д.), и возвращает подстроки в массиве.
Хотя в некоторых сценариях это может быть полезно, он менее подходит для извлечения определенных фрагментов из существующих строк, чем метод.substring().
Как использовать метод Java.substring()
Метод Java.substring() извлекает подстроку из существующей строки на основе значений индекса, которые мы передаем в качестве целочисленных аргументов.
Синтаксис для Java.substring()
Мы можем использовать метод.substring() одним из двух способов.
Первый подход возвращает подстроку как новый объект String, образованный символами между значением начального индекса (включительно) и концом исходной строки.
String strEx = new String(«Example»);
String subStr = strEx.substring(int startIndex);
Второй способ возвращает подстроку как новый объект String, образованный символами от начального индекса до конечного индекса, но не включая его, в исходной строке.
String strEx = new String(«Example»);
String subStr = strEx.substring(int startIndex, int endIndex);
Примечание. Оба подхода вызывают исключение IndexOutOfBoundException, если мы передаем значения начального индекса, которые больше исходной длины строки или меньше 0. Мы также выдадим эту ошибку, если начальный индекс больше конечного индекса.
Давайте рассмотрим несколько примеров кода с использованием метода Java.substring().
Пример подстроки Java с использованием значений индекса
В этом примере мы создадим объект Stringобъект («Изучите Java на Hackr.io »), который мы можем использовать в качестве основы для извлечения диапазона подстрок. Затем мы передадим целочисленные значения индекса во встроенную функцию Java. методу substring().
Во-первых, мы передали значение начального индекса, равное 0, без конечного индекса, что фактически возвращает исходную строку, как показано в выходных данных.
Во-вторых, мы передали значения начального и конечного индекса, причем конечный индекс представляет длину исходной строки. Теперь, поскольку Java использует нулевую индексацию и конечный индекс не включается, это также возвращает полную исходную строку, как вы можете видеть в выводе.
Это означает, что первые два фрагмента были эквивалентными способами возврата одной и той же подстроки, а именно исходной строки.
Затем мы передали значение начального индекса, равное 1, которое отсекает первый символ исходной строки для создания подстроки. Затем мы передали начальный индекс 0 и конечный индекс n-1, что отсекает последний символ исходной строки для подстроки, как показано в выходных данных.
Наконец, мы передали произвольные значения начального и конечного индекса, чтобы вернуть разные подстроки, как показано в выводе. Обратите внимание, что пробелы также являются допустимыми символами, а это означает, что мы можем вернуть их внутри подстроки, как показано в последнем примере подстроки.
public class SubstringHackrIO {
public static void main(String[] args) {
String strExample = «Learn Java on Hackr.io»;
System.out.println(«Original string: » + strExample);// Find length of string: n = 25
int n = strExample.length();// Extract and print substrings
System.out.println(«From index 0: » + strExample.substring(0));
System.out.println(«From index 0 to n: » + strExample.substring(0, n));
System.out.println(«From index 1: » + strExample.substring(1));
System.out.println(«From index 0 to n-1: » + strExample.substring(0, n-1));
System.out.println(«From index 0 to 10: » + strExample.substring(0, 10));
System.out.println(«From index 10 to 14: «+ strExample.substring(10, 14));
}
}
Выход:
Original string: Learn Java on Hackr.io
From index 0: Learn Java on Hackr.io
From index 0 to n: Learn Java on Hackr.io
From index 1: earn Java on Hackr.io
From index 0 to n-1: Learn Java on Hackr.i
From index 0 to 10: Learn Java
From index 10 to 14: on
Как напечатать часть строки в Java с помощью.indexOf()
В этом примере мы используем встроенный в Java метод.indexOf() для извлечения подстроки между двумя разными символами, а именно открывающими и закрывающими квадратными скобками.
Синтаксис для.indexOf()
String strEx = new String(«Example»);
int indexVal = strEx.indexOf(«x»); // indexVal = 1
Этот подход может быть полезен, поскольку может быть более интуитивно понятным извлекать подстроки на основе их близости к другим символам, а не передавать значения индекса подстроки.
Итак, передав открытую квадратную скобку в качестве аргумента String в.indexOf(), мы можем вернуть значение индекса для первого вхождения этого символа в исходную строку. Это будет наш начальный индекс в этом примере подстроки Java.
Затем мы можем передать закрывающую квадратную скобку в качестве аргумента String функции indexOf(), которая возвращает значение индекса для первого вхождения этого символа в исходную строку. Мы будем использовать это значение в качестве конечного индекса для извлечения подстроки.
Напомним, что начальный индекс является инклюзивным, а конечный индекс — неинклюзивным. Это означает, что мы должны сдвинуть начальный индекс на +1, чтобы наша подстрока начиналась с первого символа справа от открытой квадратной скобки. Конечный индекс готов к работе, поскольку он вернет первый символ слева от закрывающей квадратной скобки.
Наконец, как показано в выводе, мы можем использовать значения начального и конечного индекса с помощью.substring() для извлечения и печати нашей подстроки.
public class SubstringHackrIO {
public static void main(String[] args) {
String strExample = «Learn Java on [Hackr.io]»;
System.out.println(«Original string: » + strExample);// Get index values for first occurrences of ‘[‘ and ‘]’
int start = strExample.indexOf(«[«);
int end = strExample.indexOf(«]»);// Extract and print substring between ‘[‘ and ‘]’
String subStr = strExample.substring(start + 1, end);
System.out.println(«Substring: » + subStr);
}
}
Выход:
Original string: Learn Java on [Hackr.io]
Substring: Hackr.io
Метод подстроки Java с использованием.lastIndexOf()
В этом примере мы будем использовать методы Java.indexOf() и.lastIndexOf(). На этот раз мы будем передавать этим методам аргументы в виде подстроки, а не отдельных символов.
Синтаксис для.lastIndexOf()
String strEx = new String(«Example Example»);
int indexVal = strEx.lastIndexOf(«x»); // indexVal = 9
Мы начнем с использования.indexOf() для поиска индекса первого символа в первом вхождении подстроки «Learn». Это будет индекс символа «L».
Затем мы воспользуемся.lastIndexOf(), чтобы найти значение индекса для первого символа в последнем вхождении подстроки «Java», которая будет индексом для «J».
Если мы используем эти два результата в качестве значений начального и конечного индекса, мы можем извлечь подстроку символов из начального индекса (включительно) до конечного индекса, но не включая его. Теперь мы можем передать эти аргументы в.substring() перед печатью результата, как показано в выводе.
Примечание. Если мы не можем найти подстроку с помощью.indexOf() или.lastIndexOf(), возвращаемое значение будет −1. Вам следует рассмотреть возможность обработки этой возможности в рабочем коде, поскольку это может вызвать исключение с помощью.substring().
public class SubstringHackrIO {
public static void main(String[] args) {
String strExample = «Learn Java on Hackr.io, and enjoy Java!»;
System.out.println(«Original string: » + strExample);// Get index of first occurrence of «Learn» substring
int start = strExample.indexOf(«Learn»);
// Get index of last occurrence of «Java» substring
int end = strExample.lastIndexOf(«Java»);// Extract and print substring
String subStr = strExample.substring(start, end);
System.out.println(«Substring: » + subStr);
}
}
Выход:
Original string: Learn Java on Hackr.io, and enjoy Java!
Substring: Learn Java on Hackr.io, and enjoy
Заключение
В этом руководстве мы рассмотрели различные функции подстроки в Java, которые можно использовать для извлечения подстроки Java из существующего объекта String с помощью встроенного метода.substring().
Мы начали с простых примеров, в которых использовались значения индекса либо для начальной позиции, либо для начальной и конечной позиций, чтобы помочь нам извлекать подстроки из исходной строки.
Затем мы изучили методы Java.indexOf() и.lastIndexOf() для возврата подстроки из исходной строки путем поиска значений char.
Этот подход «поиска символов» позволил нам найти индекс нужных символов (или подстрок) внутри исходного строкового объекта, что позволило нам извлекать подстроки без явного объявления значений индекса. Этот подход может быть более интуитивным, если вы можете визуально видеть слова или символы, окружающие подстроку, которую вы хотите извлечь.
Часто задаваемые вопросы
Что делает.substring(1) в Java?
Это возвращает новый объект подстроки, эквивалентный обрезке первого символа из исходной строки.
Как использовать подстроку в Java?
Вы можете использовать метод.substring() либо со значениями начального индекса, либо со значениями начального и конечного индекса, чтобы вернуть подстроку из исходной строки в Java. Обратите внимание, что значение конечного индекса не включает в себя, что означает, что подстрока будет содержать символ по этому индексу, но не включая его.
Можно ли использовать.split() для создания подстрок в Java?
Вы можете использовать метод Java.split() для разделения строки на массив подстрок, изначально разделенных в строке разделительным значением (запятая, пробел, символ и т. д.).
Как разделить строку на подстроку?
Класс Java String предоставляет. substring(), который можно использовать для извлечения подстроки из исходной строки. Альтернативно вы можете использовать встроенный метод.split () для разделения строки на массив подстрок, изначально разделенных разделительным значением (запятая, пробел, символ и т. д.).









