Как проверить входит ли подстрока в строку javascript
Перейти к содержимому

Как проверить входит ли подстрока в строку javascript

  • автор:

Check if a String Contains a Substring in JavaScript

There's two common ways to check whether a string contains a substring in JavaScript. The more modern way is the String#includes() function.

If you need to support Internet Explorer, you should instead use the String#indexOf() method, which has been a part of JavaScript since ES1 in 1997.

In general, if you have any doubt about whether code will run in an environment that supports includes() , you should use indexOf() . The includes() function's syntax is only marginally more concise than indexOf() .

Case Insensitive Search

Both String#includes() and String#indexOf() are case sensitive. Neither function supports regular expressions. To do case insensitive search, you can use regular expressions and the String#match() function, or you can convert both the string and substring to lower case using the String#toLowerCase() function.

How to check if a string contains a substring in JavaScript

Checking if a string contains a substring is one of the most common tasks in any programming language.

JavaScript offers different ways to perform this operation.

The most simple one, and also the canonical one going forward, is using the includes() method on a string:

This method was introduced in ES6/ES2015.

It’s supported in all modern browsers except Internet Explorer:

Browser Support for includes

To use it on all browsers, use Polyfill.io or another dedicated polyfill.

includes() also accepts an optional second parameter, an integer which indicates the position where to start searching for:

Pre-ES6 alternative to includes(): indexOf()

Pre-ES6, the common way to check if a string contains a substring was to use indexOf , which is a string method that return -1 if the string does not contain the substring. If the substring is found, it returns the index of the character that starts the string.

Rukovodstvo

статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.

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

Обычной операцией во многих языках программирования является проверка, содержит ли строка другую строку. Хотя это простая и распространенная задача, названия методов в разных языках программирования часто различаются. Например, вот небольшой пример методов, используемых для этого на разных языках: * Java: String.contains (), String.indexOf () и т. Д. * Python: оператор in, String.index (), String. find () * Перейти: strings.Contains () * Ruby: string.include? Вы уловили суть. Есть миллион способов сделать это

Время чтения: 4 мин.

Обычной операцией во многих языках программирования является проверка, содержит ли строка другую строку. Хотя это простая и распространенная задача, названия методов в разных языках программирования часто различаются. Например, вот небольшой пример методов, используемых для этого на разных языках:

  • Java: String.contains() , String.indexOf() и т. Д.
  • Python: оператор in String.index() , String.find()
  • Перейти: strings.Contains()
  • Рубин: string.include?

Вы уловили суть. Есть миллион способов сделать это, и кажется, что каждый язык реализует это по-своему.

В любом случае, давайте посмотрим несколько способов, которыми вы можете проверить, содержит ли строка подстроку в JavaScript.

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

Метод String.includes()

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

Это работает так:

Как видите, возвращается логическое значение, поскольку строка «stack» является подстрокой «stackabuse».

Это поиск с учетом регистра, поэтому следующая подстрока не будет соответствовать:

Хотя этого достаточно для большинства случаев использования, метод includes() также предоставляет другой вариант, который может быть вам полезен. Может быть предоставлен второй аргумент, который сообщает методу, с какого индекса начинать поиск. Поэтому, если вы знаете, что подстрока не содержится в первых 50 символах (или вы просто не хотите, чтобы она соответствовала этим символам), вы можете использовать следующий метод:

Смещение ниже 0 просто запускает поиск с индекса 0, а смещение больше, чем string.length возвращает false поскольку поиск начинается с string.length .

Метод String.indexOf()

Метод String.indexOf() очень похож на предыдущий includes() (и его также можно использовать в полифилле для includes() ), но единственное отличие — это возвращаемое значение. Вместо того, чтобы возвращать логическое значение, указывающее на наличие подстроки, он фактически возвращает расположение индекса подстроки или -1, если его нет.

Как видите, этот метод возвращает позицию индекса подстроки, отсчитываемую от 0, и -1, если подстрока не найдена.

Как и метод includes() метод indexOf() чувствителен к регистру и также поддерживает параметр смещения:

Этот метод полезен, когда вам нужно знать точное местоположение подстроки, однако он не так чист, если просто использовать его как логическое значение:

В подобных случаях вам следует использовать метод includes() поскольку он более подвержен ошибкам.

Регулярное выражение

Один из наиболее полезных и эффективных способов проверки подстроки — использование регулярных выражений или регулярных выражений. Использование регулярного выражения для такой задачи дает вам гораздо больше гибкости, чем с предыдущими методами, где вы можете проверять только постоянную строку. Хотя регулярное выражение слишком велико, чтобы здесь полностью описать его, мы можем хотя бы взглянуть на некоторые полезные функции для нашего варианта использования.

Проверка наличия подстрок в строке с регулярным выражением может быть достигнута с помощью RegExp.test() :

В отличие от двух предыдущих методов, теперь мы можем выполнять поиск без учета регистра с помощью флага i

В качестве более сложного примера предположим, что вы хотите узнать, содержит ли строка почтовый индекс (5-значные почтовые индексы), но вам все равно, какой почтовый индекс находится в строке. Такого рода проблемы не могут быть решены с помощью includes() в indexOf() includes() или indexOf() . Но с регулярным выражением мы можем легко это проверить:

Хотя JavaScript в любом случае не обязательно известен своей скоростью, имейте в виду, что это будет медленнее, чем более простой метод, такой как includes() , поэтому вы должны использовать его только для более сложных случаев, которые не могут быть решены с помощью более простого решения. .

Заключение

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

Поиск в строке JavaScript. Работа с подстрокой

В предыдущей статье мы начали тему работы со строками в JavaScript. В этом материале вы узнаете, как выполнять поиск в строке, как работать с подстрокой, как извлекать часть строки и т. д.

Поиск строки в строке в JavaScript

С помощью метода IndexOf() можно вернуть индекс первого вхождения заданного текста в строку:

В нашем случае происходит подсчёт позиции с нуля. При этом: 1) 0 — первая позиция в строке, 2) 1 — вторая, 3) 2 — третья.

Идём дальше. Функция LastIndexOf() в JavaScript вернёт индекс последнего вхождения:

Оба этих метода принимают 2-й параметр в виде начальной позиции для поиска:

Стоит упомянуть и функцию Search() — она выполняет поиск строки для заданного значения, возвращая позицию совпадения:

Метод slice () в JavaScript

Функция slice() извлечёт часть строки и вернёт извлечённую часть в новой строке. Метод способен принимать два параметра: начальный индекс (это положение) и конечный индекс (речь идёт о позиции).

К примеру, давайте нарежем часть строки из позиции 7 в положение 13:

В нашем случае результатом будет:

Если параметр будет иметь отрицательное значение, то позиция будет учитываться с конца строки. Например:

Результат будет тот же.

Кстати, если 2-й параметр опустить, то метод сделает срез оставшейся части строки:

То же самое получим, выполнив срез с конца:

Остаётся лишь добавить, что отрицательные позиции не функционируют в Internet Explorer 8 и других, более ранних версиях.

Метод подстроки в JavaScript

Подстрока в JavaScript аналогична срезу с той разницей, что подстрока не способна принимать отрицательные индексы:

В качестве результата опять получим «Banana».

Если же мы опустим 2-й параметр, то подстрока разрежет оставшуюся часть строки.

Метод substr () в JavaScript

Строковый метод substr() похож на slice() с той разницей, что 2-й параметр показывает длину извлечённой детали.

Мы можем опустить 2-й параметр — тогда строковый метод substr() разрежет оставшуюся часть строки.

Получим: Banana, Kiwi.

Если 1-й параметр будет отрицательным, позиция будет рассчитываться с конца строки.

Меняем содержимое строки в JavaScript

Строковый метод Replace() позволит заменить указанное значение иным значением в строке:

Результат: Please visit W3Schools!

Обратите внимание, что метод Replace() не изменит строку, в которой вызывается, а возвратит новую.

В следующем примере функция Replace() меняет лишь первое совпадение:

Итог: Please visit W3Schools and Microsoft!

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

Но мы можем заменить регистр без его учёта, если воспользуемся регулярным выражением с пометкой » i «:

Результат: Please visit W3Schools!

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

Если желаете заменить все совпадения, воспользуйтесь регулярным выражением с флагом /g:

Тут получим следующее: Please visit W3Schools and W3Schools!

Извлекаем строковые символы в JavaScript

Есть 2 безопасных строковых функции для извлечения строковых символов: • charCodeAt (позиция); • charAt (позиция).

Функция charAt() возвратит символ по указанному нами индексу (позиции) в строке:

Что касается метода charCodeAt(), то он вернёт Юникод символа по указанному нами индексу:

Что ж, на этом всё, удачного вам кодинга!

Интересует профессиональный курс по JavaScript-разработке? Переходите по ссылке ниже:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *