Что такое подстрока в java
Подстрока в сроке на Java или как работает метод substring()
Строки в основном определяются как массив символов. В Java объекты String являются неизменяемыми, что означает, что константа не может быть изменена после создания.
Что такое подстрока в Java?
Часть строки называется подстрокой в Java. Другими словами, подстрока является подмножеством другой строки. Метод substring() возвращает новую строку, которая является подстрокой этой строки. Метод является перегруженным.
Синтаксис
Пример
Здесь строка «Edureka», но когда вы разбиваете ее на блоки, она состоит из подстрок, которые в итоге вычисляют строку.
Методы
В основе метода substring() два основных метода. Они есть:
String substring (int begIndex)
Этот метод имеет два варианта и возвращает новую строку, которая является подстрокой этой строки. Подстрока начинается с символа по указанному индексу beginIndex до конца строки.
Синтаксис
Примечание: индекс начинается с 0, что относится к первому символу строки.
Пример
String substring(int beginIndex, int endIndex)
Этот метод имеет два варианта и возвращает новую строку, которая является подстрокой этой строки. Подстрока начинается с символа с указанным индексом beginIndex и продолжается до конца строки или до endIndex – 1, если присутствует другой аргумент.
Синтаксис
Пример
Программа
Пример кода для печати всех подстрок заданной строки:
Получить подстроку из строки в Java
Практические способы использования полезной функциональности подстрок в Java – от простых примеров до более сложных сценариев.
1. Обзор
В этом кратком руководстве мы сосредоточимся на функциональности подстрок строк в Java.
В основном мы будем использовать методы из класса String и несколько из класса StringUtils Apache Commons.
Во всех следующих примерах мы будем использовать эту простую строку:
2. Основы подстроки
Давайте начнем с очень простого примера – извлечения подстроки с начальным индексом:
Обратите внимание, как мы извлекли страну проживания Джулии в нашем примере здесь.
Давайте сделаем это и избавимся от этой лишней точки в конце, как в приведенном выше примере:
В приведенных выше примерах мы использовали точное положение для извлечения подстроки.
2.1. Получение подстроки, начинающейся с определенного символа
В случае, если позиция должна быть динамически рассчитана на основе символа или Строка мы можем использовать Индекс метод:
3. Использование подпоследовательности
Единственная разница в том, что он возвращает CharSequence вместо Строка и он может использоваться только с определенным начальным и конечным индексом:
4. Использование Регулярных Выражений
Регулярные выражения придут нам на помощь , если нам нужно извлечь подстроку, соответствующую определенному шаблону.
В примере Строка дата рождения Джулии находится в формате “дд-мм-гггг”. Мы можем сопоставить этот шаблон с помощью API регулярных выражений Java.
Прежде всего, нам нужно создать шаблон для “дд-мм-гггг”:
Затем мы применим шаблон, чтобы найти совпадение из данного текста:
После успешного совпадения мы можем извлечь совпадающую строку :
Для получения более подробной информации о регулярных выражениях Java ознакомьтесь с этим руководством.
5. Использование разделения
Мы можем использовать метод split из класса String для извлечения подстроки. Допустим, мы хотим извлечь первое предложение из примера String. Это довольно легко сделать с помощью split :
Поскольку метод разделения принимает регулярное выражение, нам пришлось избежать символа точки. Теперь в результате получается массив из 2 предложений.
Мы можем использовать первое предложение (или перебирать весь массив):
Пожалуйста, обратите внимание, что есть лучшие способы обнаружения предложений и токенизации с помощью Apache OpenNLP. Ознакомьтесь с этим руководством, чтобы узнать больше об API OpenNLP.
6. Использование сканера
Давайте выясним, как использовать это, чтобы получить первое предложение из текста примера:
В приведенном выше примере мы установили пример String в качестве источника для использования сканером.
Затем мы устанавливаем символ точки в качестве разделителя (который должен быть экранирован, иначе он будет рассматриваться как специальный символ регулярного выражения в этом контексте).
Наконец, мы утверждаем первый токен из этого вывода с разделителями.
7. Зависимости Maven
Мы можем пойти немного дальше и использовать полезную утилиту – StringUtils class – часть библиотеки Apache Commons Lang :
8. Использование стрингутилов
Библиотеки Apache Commons добавляют некоторые полезные методы для управления основными типами Java. Apache Commons Lang предоставляет множество вспомогательных утилит для API java.lang, в первую очередь String методы манипулирования.
В этом примере мы увидим как извлечь подстроку, вложенную между двумя строками :
Существует упрощенная версия этого метода в случае, если подстрока вложена между двумя экземплярами одной и той же строки :
Метод substringAfter из того же класса получает подстроку после первого вхождения разделителя.
Разделитель не возвращается:
Аналогично, метод substringBefore получает подстроку перед первым вхождением разделителя.
Разделитель не возвращается:
Вы можете ознакомиться с этим руководством, чтобы узнать больше об обработке String с помощью API Apache Commons Lang.
9. Заключение
В этой краткой статье мы выяснили различные способы извлечения подстроки из String в Java. Вы можете изучить наши другие учебные пособия по строковым манипуляциям в Java.
Что такое подстрока в java
Строка — это упорядоченная последовательность символов. В Java строка является основным носителем текстовой информации. Для работы со строками здесь используются следующие классы: String, StringBuilder, StringBuffer. В этом уроке речь пойдет о классе String, его на первых порах будет вполне достаточно.
В данном уроке рассматривается:
В уроке 6 уже упоминалась работа со строками, а именно, как создавать строку. Также частично со строками мы встречались в предыдущих уроках. В этом и следующих двух уроках мы углубим знания о строках. В этом уроке будут рассмотрены создание строк в Java и наиболее популярные методы при работе со строками. Следующий урок будет посвящен форматированию строк. И еще один урок будет на тему работы с регулярными выражениями в Java, поскольку регулярные выражения достаточно мощный и нужный инструмент при работе со строками.
Но начнем с самого начала.
Создание строк
Строка в Java является объектом, поэтому ее можно создать, как и любой другой объект, при помощи оператора new.
Также строку можно создать при помощи литерала (фразы заключенной в кавычки) следующим образом.
Обе строки, независимо от способа создания являются объектами — экземплярами класса String.
Важный момент: создание объектов при помощи литерала возможно только в классе String. Объекты любого другого класса при помощи литерала создать нельзя.
Можно также создать массив строк. Например, так:
Конкатенация или слияние строк в Java
Для того, чтобы объединить несколько разных строк в одну, в Java можно использовать перегруженные (специально для объектов String) операторы «+» и «=+».
Еще один важный момент : операторы «+» и «=+», перегруженные для String, являются единственными перегруженными операторами в Java. Программист здесь не имеет возможности самостоятельно перегружать какие-либо операторы (как, например, в С++ и некоторых других языках).
Пример 1:
На консоль будет выведено «Мама мыла раму»
Пример 2:
Пример 3:
Наиболее употребительные методы класса String
При использовании IDE можно легко увидеть, какие методы есть у класса и получить подсказку по их использованию. На примере IDE Eclipse: для того, чтобы открыть список методов и быстро выбрать подходящий, нужно после имени переменной поставить точку и нажать комбинацию клавиш CTRL + Space (пробел). После этого появится окно, как на рисунке 14.1, где будут перечислены все доступные методы класса.
При выборе метода из этого списка, справа (или слева) появится желтое окно с подсказкой по его использованию. При помощи нажатия Enter или двойного клика мыши метод можно вставить в ваш код, не прибегая к ручному набору.
Также после имени переменной и точки можно начать набирать вручную имя метода и после введения нескольких первых букв нажать CTRL + Space (пробел). При этом, если метод, начинающийся на эти буквы один, то он автоматически подставится в код, если методов несколько, то откроется окно, как на рисунке 14.1, где будут перечислены только те методы, которые начинаются с этих введенных вами букв.
Это было лирическое отступление о том, как облегчить себе жизнь. Далее рассмотрим методы, которые чаще всего используются при работе со строками. Некоторые задачи можно решить и без применения этих методов, но их знание значительно облегчает процесс программирования. В дальнейшем описании, первое слово, которое стоит перед названием метода — тип значения, которое возникнет в результате работы метода (значение, которое метод возвращает).
Еще раз конкатенация
String concat(String str) — производит ту же конкатенацию, что была описана выше, но использование этого метода из класса String положительно влияет на производительность и скорость программы. На небольших примерах это незаметно и не существенно, но в более серьезных приложениях стоит использовать этот метод. Результатом работы метода будет строка. Параметр, который нужно передавать в метод для конкатенации — тоже строка, о чем нам говорит значение в скобках (String str).
Перепишем пример 2, при помощи concat():
Определение количества символов в строке
Для того чтобы определить количество символов в строке, используется метод length.
int length() — возвращает длину строки. Длина равна количеству символов Unicode в строке.
Пример 4:
Извлечение символов из строки
Если нам требуется узнать, какой символ находиться в строке на конкретной позиции, можем использовать метод charAt.
char charAt(int index) — возвращает символ, находящийся по указанному индексу в строке. Результатом работы метода будет символ типа char. Параметр, который передается в метод — целое число. Первый символ в строке, подобно массивам, имеет индекс 0.
Пример 5: определить последний символ в строке.
Если мы хотим работать со строкой, как с массивом символов, можем конвертировать строку в массив при помощи метода toCharArray.
char[] toCharArray() — преобразует строку в новый массив символов.
Пример 6: поменять в строке символы пробела на точки при помощи преобразования в массив символов (для этой задачи есть более простое решение, нежели преобразование в массив, но об этом чуть позже).
Примечание: в данном случае мы не сможем использовать метод charAt. При помощи этого метода мы бы смогли только найти пробелы в строке, но не поменять их.
Извлечение подстроки из строки
String substring(int beginIndex, int endIndex) или substring(int beginIndex) — возвращает новую строку, которая является подстрокой используемой строки. В параметрах метода нужно указать индекс строки, с которого начинается подстрока и индекс, которым заканчивается. Также возможно указывать только начальный индекс. В этом случае будет возвращена подстрока от начального индекса и до конца строки.
Пример 7.
Разбиение строк
Для разбиения строк на части используется метод String[] split(String regex), который разбивает строку на основании заданного регулярного выражения. О регулярных выражениях поговорим в одном из следующих уроков. Здесь покажем пример простого разбиения строки заданного одним символом.
Пример 8.
Поиск в строке
boolean contains(CharSequence s) — проверяет, содержит ли строка заданную последовательность символов и возвращает true или false.
Пример 9.
boolean endsWith(String suffix) — проверяет завершается ли строка определенными символами и возвращает true или false.
Пример 10.
boolean startsWith(String prefix) или startsWith(String prefix, int toffset) — проверяет, начинается ли строка с определенных символов. Во втором случае можно указать позицию с которой необходимо начать поиск префикса.
Пример 11.
Пример 12
int lastIndexOf(int ch), lastIndexOf(int ch, int fromIndex), lastIndexOf(String str), lastIndexOf(String str, int fromIndex) — аналогично предыдущему случаю, только ищется последнее вхождение символа или подстроки в строке.
Модификация строк
Модификация строк не является модификацией как таковой. Дело в том, что объекты класса String после создания уже нельзя изменять. Но можно создать копию строки с изменениями. Именно это и делают следующие методы.
toLowerCase() — преобразовать строку в нижний регистр;
toUpperCase() — преобразовать строку в верхний регистр;
trim() — отсечь на концах строки пустые символы;
String replace(char oldChar, char newChar), replace(CharSequence target, CharSequence replacement) — замена в строке одного символа или подстроки на другой символ или подстроку.
Вспомним пример 6, где нужно было поменять в строке символы пробела на точки и перепишем его с использованием replace:
Сравнение строк
boolean equals(Object anObject) — проверяет идентичность строк. Возвращает true только в том случае, если в строках представлена одинаковая последовательность символов одной величены.
Пример 14
int compareTo(String anotherString) — так же проверяет идентичность строк, однако, в отличии от метода equals возвращает:
Данный метод предназначен для упорядочивания строк. Он позволяет сравнить строки между собой и определить предшествующую строку. Для того, чтобы реализовать такое сравнение метод сравнивает числовые значения букв.
Рассмотрим пример с именами «Маша» и «Миша». При сравнении этих двух имен (пример 15), метод compareTo укажет, что имя «Маша» предшествует имени «Миша» (выдав отрицательное число) или наоборот, «Миша» следует за «Маша» (выдав положительное число). При упорядочивании имен по алфавиту мы бы упорядочили эти имена именно так. Метод в данном случае определяет, что числовое значение буквы «а» в «Маша» меньше, чем числовое значение «и» в Миша.
Пример 15
Однако, в случае, если мы напишем «маша» с маленькой буквы и попробуем сравнить с «Миша», то получим положительное число.
То есть в данном случае имя «Миша» предшествует имени «маша». Это происходит потому, что в таблице символов Юникода буквы верхнего регистра предшествуют нижнему.
Для сравнения строк без учета регистра символов используется функция int compareToIgnoreCase(String str)
Как мы видим, при сравнивании «маша» с «Миша» мы снова получаем отрицательное значение, то есть «маша» предшествует имени «Миша».
Подробно про Substring в Java
Метод подстроки String очень полезен в программировании Core Java. Это фундаментальный метод выполнения операций со строками. Substring извлекает последовательность символов из String и возвращает ее как новый объект String.
У метода Substring есть два варианта. Первый принимает только один аргумент, а другой – два.
Подстрока (int beginIndex)
Этот метод вернет новый объект String, содержащий подстроку данной строки из указанного startIndex (включительно). Это получит часть String, начинающуюся с заданного beginIndex и до последнего символа String.
где beginIndex – индекс, с которого начать извлечение возвращаемой подстроки (включительно)
Ключевая идея состоит в том, что он получит все символы из индекса, указанного в beginIndex, до последнего символа в строке.
Пример использования Substring в Java
А вот вывод приведенного выше кода.
substring(int beginIndex, int endIndex)
Этот метод вернет новый объект String, содержащий подстроку данной строки от указанного startIndex до endIndex. И получит часть String, начиная с данного beginIndex и до указанного endIndex.
где beginIndex – индекс, с которого нужно начать извлечение возвращаемой подстроки. (включительно)
endIndex – индекс, с которого нужно закончить извлечение возвращаемой подстроки. (эксклюзив)
Смысл в том, что мы можем указать, где начинать и заканчивать копирование символов из исходной строки.
Помните также, что beginIndex является включающим, а endIndex – эксклюзивным. Например, символ в индексе 2 строки «ABCDE» – это «C», а символ в индексе 4 – «E». Возвращенная строка будет содержать символы от «C» включительно до символа «E» (то есть мы не включаем E). Результат – “CD”.
Вот пример программы, которая примет строку и распечатает все возможные подстроки.
И вот результат, предполагающий, что была введена строка wxyz.
Вот пример того, как получить середину строки с помощью метода substring в алгоритме.
Вот пример программы, которая перевернет строку.
Это выведет обратную строку ABCDEFG:
GFEDCBA
Вот пример программы, которая проверит, является ли строка палиндромом или нет.
Средняя оценка / 5. Количество голосов:
Или поделись статьей
Видим, что вы не нашли ответ на свой вопрос.
Операции со строками и подстроками в Java
В этой статье мы рассмотрим операции со строкой и подстрокой. Вы узнаете, как соединять и сравнивать строки, как извлекать символы и подстроки, как выполнять поиск в строке.
Соединение строк в Java
Чтобы соединить строки в Java, подойдёт операция сложения «+» :
Если же в предстоящей операции сложения строк будет применяться нестроковый объект, допустим, число, данный объект преобразуется к строке:
По факту, когда мы складываем строки с нестроковыми объектами, вызывается метод valueOf() класса String. Этот метод преобразует к строке почти все типы данных. Чтобы преобразовать объекты разных классов, valueOf вызывает метод toString() данных классов.
Объединять строки можно и с помощью concat() :
Метод принимает строку, с которой нужно объединить вызывающую строку, возвращая нам уже соединённую строку.
Метод join — статический. Первый параметр — это разделитель, который будет использоваться для разделения подстрок в общей строке. Последующие параметры осуществляют передачу через запятую произвольного набора объединяемых подстрок — в нашем случае их две, но можно и больше.
Извлекаем символы и подстроки в Java
Сравниваем строки в Java
Мы уже писали о том, как сравнивать строки в Java, используя для этого метод equals() (регистр учитывается) и equalsIgnoreCase() (регистр не учитывается). Хотелось бы сказать пару слов про ещё одну пару методов: int compareTo(String str) и int compareToIgnoreCase(String str) — они позволяют не только сравнить 2 строки, но и узнать, больше ли одна другой. Если значение, которое возвращается, больше 0, первая строка больше, если меньше нуля, всё наоборот. Когда обе строки равны, вернётся ноль.
Для определения используется лексикографический порядок. Допустим, строка «A» меньше строки «B», ведь символ ‘A’ в алфавите находится перед символом ‘B’. Когда первые символы строк равны, в расчёт берутся следующие символы. К примеру:
Поиск в строке в Java
Выполняем замену в строке в Java
Заменить в нашей строке одну последовательность символов другой можно с помощью метода replace() :
Обрезаем строки в Java
Для удаления начальных и конечных пробелов применяют метод trim() :
Также существует метод substring() — он возвращает подстроку, делая это с какого-нибудь конкретного индекса до конца либо до определённого индекса:
Меняем регистр в Java
При необходимости вы можете перевести все символы вашей строки в нижний регистр ( toLowerCase() ) или в верхний ( toUpperCase() ):
Split
С помощью этого метода вы сможете разбить строку на подстроки по конкретному разделителю. Под разделителем понимается какой-либо символ либо набор символов, передаваемые в метод в качестве параметра. Давайте для примера разобьём небольшой текст на отдельные слова:
В нашем случае строка разделится по пробелу, и мы получим следующий консольный вывод:
Вот и всё! Узнать больше всегда можно на наших курсах: