Auditportal.ru

Аудит Портал
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как извлечь первые или последние два или n слов из текстовой строки?

Java: как проверить, содержит ли строка подстроку

Программисты часто проверяют наличие подстроки в строках. Иногда мы хотим прервать строку на точке, если она содержит разделитель. В других случаях мы хотим изменить поток, если строка содержит (или не содержит) определенную подстроку, например, команду.

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

В качестве альтернативы вы можете использовать Apache Commons и вспомогательный класс StringUtils, который имеет множество методов, производных от основных методов.

Основные способы Java

String.contains()

Для проверки существования подстроки используется функция .contains(). Она предоставляется самим классом String и является очень эффективной.

Метод принимает CharSequence и возвращает true, если эта последовательность присутствует в строке, для которой вызван метод:

Бег поможет вам в этом:

Примечание: Метод .contains() чувствителен к регистру. Если бы мы попытались найти в нашей строке слово «Va», результат был бы ложным.

Часто, чтобы избежать этой проблемы, поскольку мы не хотим быть чувствительными к регистру, регистр обеих строк должен быть проверен перед выполнением команды :

String.indexOf()

Метод .indexOf() возвращает индекс первого вхождения подстроки в строку и предлагает на выбор несколько конструкторов:

Поиск одного символа может осуществляться со смещением или без него, или поиск строки может осуществляться со смещением или без.

Если есть первое вхождение, то возвращается индекс, в противном случае -1:

Этот код даст следующие результаты:

  • Первое вхождение i в слове ipsum , имеет индекс 6 от начала последовательности символов.
  • Первое вхождение i со смещением 8 находится в слове sit , имеющем индекс 19 от начала.
  • Первое появление последовательности символов dolor , имеет индекс 12 от начала.
  • Наконец, в 10-ом отрезке нет слова lorem.
Читайте так же:
Как изменить верхний регистр на нижний в Microsoft Excel?

Наконец, метод .contains() вызывает внутренний метод .indexOf(). Функция .indexOf() более эффективна, чем ее аналог (хотя она меньше), хотя у нее несколько иной сценарий использования.

String.lastIndexOf()

В отличие от метода .indexOf(), возвращающего первое вхождение, метод .lastIndexOf() возвращает индекс последнего вхождения символа или строки со сдвигом или без него:

Выполнение этого кода:

Некоторые могут быть немного удивлены результатами и сделать вывод:

LastIndexOf(‘i’, 8) должен был вернуть 19, так как это последнее вхождение символа после 8-го символа в строке

При выполнении функции .lastIndexOf() последовательность символов в массиве меняется на обратную. Начинается отсчет от последнего символа к первому.

Это, как говорится, ожидаемый результат — 6 последних появлений символа после пропуска 8 элементов в конце последовательности.

Шаблон с регулярным выражением и Matcher

Класс Pattern по сути является компилированным представлением регулярного выражения. Он используется совместно с классом Matcher для сопоставления последовательностей символов.

Этот класс работает, сначала составляя модель. Затем мы назначаем другую модель экземпляру Matcher , который использует метод .find() для сравнения назначенной и скомпилированной моделей.

Если они совпадают, метод .find() выдает true. Если шаблоны не совпадают, метод выдает false.

Apache Commons

Она включена в classpath многих проектов Apache Commons благодаря своей полезности и распространенности в Java. В этой библиотеке есть много полезных функций, часто используемых в производстве, включая проверку подстроки.

В классе StringUtils в Apache Commons есть несколько вспомогательных методов для манипулирования строками, проверки нулевых значений и т. д. Для этого мы можем использовать методы .contains(), .indexOf(), .lastIndexOf() или .containsIgnoreCase().

Если нет, вы можете добавить зависимость в свой файл pom.xml, если вы используете Maven:

Или добавив его через Gradle:

StringUtils.contains()

Метод .contains() очень прост и похож на работу Java.

Разница лишь в том, что мы не вызываем метод проверяемой строки (поскольку она не наследует этот метод), а передаем искомую строку вместе с проверяемой строкой:

Читайте так же:
Как изменить цвет шрифта в зависимости от значения ячейки в Excel?

Выполнение этого кода дает:

Этот метод чувствителен к регистру символов.

StringUtils.indexOf()

Естественно, метод .indexOf() также работает очень похоже на основной подход в Java:

Выполнение кода приведет к:

StringUtils.indexOfAny()

Метод .indexOfAny() принимает список символов, а не только один, позволяя искать первое вхождение одного из указанных символов:

Запуск этого кода приведет к:

StringUtils.indexOfAnyBut()

Метод .indexOfAnyBut() ищет первое появление любого символа, которого нет в предоставленном наборе:

Этот код дает вам:

StringUtils.indexOfDifference()

.indexOfDifference() сравнивает два символьных массива и возвращает индекс первой разницы:

Выполнение этого кода позволит:

StringUtils.indexOfIgnoreCase()

Метод .indexOfIgnoreCase() возвращает индекс первого появления символа в последовательности символов, игнорируя регистр:

Выполнение этого кода позволит:

StringUtils.lastIndexOf()

Наконец, метод .lastIndexOf() работает точно так же, как и обычный метод Java:

Выполнение данной программы:

StringUtils.containsIgnoreCase()

Метод .containsIgnoreCase() проверяет, содержит ли строка подстроку, не обращая внимания на регистр:

Выполнение этого кода приведет к:

StringUtils.containsOnly()

Метод .containsOnly() проверяет, содержит ли последовательность символов только заданные значения.

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

Бег поможет вам в этом:

Строка «Hello World!» в действительности строится только из символов последовательности ‘HleWord!

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

StringUtils.containsNone()

Метод .containsNone() , содержит ли строка какие-либо «запрещенные» символы из набора:

Выполнение этого кода приводит к:

StringUtils.containsAny()

Наконец, метод .containsAny() возвращает true, если строка содержит любой из переданных параметров в виде строки или символьной строки:

9.2. Работа со строками

Количество строковых операций, поддерживаемых Bash, удивительно велико. Этому разделу Bash не хватает унификации. Некоторые из операций похожи на операции подстановки параметров, в то время как другие аналогичны аргументам команд UNIX. Это приводит к противоречиям в синтаксисе команд и дублированию функциональности, не говоря уже о возникающей путанице.

Читайте так же:
Как извлечь только отчество или разделить имена из полного имени в Excel?

Длина строки

Пример 9-10. Вставка пустых строк между абзацами в текстовом файле

Длина подстроки в строке (соответствующие символы считаются от начала строки)

где $substring — регулярное выражение.

Index

Индекс выражения $string $substring

Номер позиции первого совпадения между $string и первым символом $substring.

Эта функция довольно близка к функции strchr() в языке C.

Извлечение подстрочных строк

Извлекает подстроку из $string, начиная с позиции $position.

Если строка $string — " * " или " @ " , то извлекается позиционный параметр (аргумент), [1] с номером $position.

Извлекает $length символов из $string, начиная с позиции $position.

Если $string — " * " или " @ " , то извлекается до $length позиционных параметров (аргументов), начиная с $position.

expr substr $string $position $length

Извлекает $length символов из $string, начиная с позиции $position.

Находит и извлекает первое совпадение $substring в $string, где $substring — это регулярное выражение.

Находит и извлекает первое совпадение $substring в $string, где $substring — это регулярное выражение.

Находит и извлекает первое совпадение $substring в $string, где $substring — это регулярное выражение. Поиск начинается с конца $string.

Находит и извлекает первое совпадение $substring в $string, где $substring — это регулярное выражение. Поиск начинается с конца $string.

Удаление фрагмента цепи

Удаление самой короткой, из найденных, подстроки $substring в строке $string. Поиск ведется с начала строки

Удаление самой длинной, из найденных, подстроки $substring в строке $string. Поиск ведется с начала строки

Удаление самой короткой, из найденных, подстроки $substring в строке $string. Поиск ведется с конца строки

Читайте так же:
Как классифицировать текстовые строки на основе ключевых слов в Excel?

Удаление самой длинной, из найденных, подстроки $substring в строке $string. Поиск ведется с конца строки

Пример 9-11. Преобразование файлов изображений из одного формата в другой с изменением имени файла

Замена подцепного устройства

Замещает первое вхождение $substring строкой $replacement.

Замещает все вхождения $substring строкой $replacement.

Подстановка строки $replacement вместо $substring. Поиск ведется с начала строки $string.

Подстановка строки $replacement вместо $substring. Поиск ведется с конца строки $string.

9.2.1. Использование awk при работе со строками

Если вы работаете со строками, вы можете использовать инструменты awk в сценарии на bash.

Пример 9-12. Альтернативный способ извлечения подстрок

9.2.2. Дальнейшее обсуждение

Более подробную информацию о работе со строками см. в разделе 9.3 и разделе о expr. Примеры сценариев:

Задаче по работе со списками в Python

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

Программа принимает на вход строку, содержащую английский текст. Создайте программу, которая подсчитывает количество артиклей в заданном тексте: ‘a’, ‘an’, ‘the’.

В Мохавских пустошах Курьер иногда забредает в Хидден-Вэлли, секретный бункер Братства стали, и любезно предлагает свою помощь. Странный компьютерный вирус проявлялся в комментариях на терминалах Братства Стали как комментарии к программам. Известно, что программисты Братства никогда не оставляют комментариев к коду и пишут программы на языке Python, поэтому удаление всех этих комментариев никак им не повредит. Пожалуйста, помогите Писцу Ибсену удалить все комментарии из программы.

На вход программы подается строка текста, содержащая целые числа. Строка выдает список чисел. Напишите программу, которая сортирует и выводит список в порядке возрастания, а затем в порядке убывания.

Читайте так же:
Как запретить пользователям печатать лист?

На вход программы подается натуральное число n. Напишите программу, которая, используя выражение list, создает список квадратов чисел от 1 до n, а затем распечатывает элементы построчно, т.е. каждый в отдельной строке.

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

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

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

В программу загружено четное число n ≥ 2. Напишите программу, которая печатает список четных чисел [2, 4, 6, . n].

Эта программа принимает две строки текста, содержащие целые числа. Программа должна предоставить элементы третьего списка, который содержит суммы элементов списков L и M. После этого каждый элемент полученного списка должен быть напечатан на одной строке, разделенный одним пробелом.

Эта программа принимает на вход строку натуральных чисел. Напишите программу, которая вставляет знак + между каждым числом, а затем вычисляет сумму этих чисел.

Входными данными программы является строка текста. Составьте программу, которая определяет, является ли введенная строка действительным телефонным номером. Текст, который соответствует следующему формату, является действительным телефонным номером:

  • abc-def-hijk или
  • 7-abc-def-hijk,

Где a, b, c, d, e, f, h, i, j, k — числа от 0 до 9.

Чтобы запустить программу, мы предоставляем ей строку текста. Используя списковое выражение, создайте программу, которая находит самое длинное слово.

На вход программы подается текстовая строка. Напишите программу, используя списковое выражение, которая преобразует каждое слово входного текста в «молодежный сленг», используя следующее правило:

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector