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

Как проверить содержит ли строка символ js

  • автор:

Содержит ли строка заданную подстроку?

и в чем этот тайный смысл публикации переводов вопросов-ответов, при этом даже без упоминания автора оригинального ответа и ссылки на него? Ладно бы связь такая поддерживалась на уровне СО и репутация оригинальному ответу шла. А так сомнительное начинание с созданием фейковых вопросов.

16 мар 2017 в 21:54
– user207618
16 мар 2017 в 22:04

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Способов, на самом деле, достаточно много:

  1. String#indexOf(str: String[, fromIndex: Number]): Number — один из старейших способов. Возвращает найденную позицию str или, если подстрока не найдена, -1 .
    Параметр fromIndex определяет отступ поиска. Важно: В условии необходимо использовать сравнение и обязательно строгое:
    1. Без сравнения, -1 (отсутствие подстроки) трактуется как true .
    2. Может возвращать 0 (совпал первый символ), что приводится обычным сравнением к false .

    'Hello, world!'.indexOf('world'); // 7 'Hello, world!'.indexOf('o'); // 4, в конце hello 'Hello, world!'.indexOf('o', 5); // 8, вторая буква в world !!'Hello, world!'.indexOf('z'); // true, отрицательное число приводится к true !!'Hello, world!'.indexOf('H'); // false, 0 трактуется как false 
    "Date of birth of Einstein: 3/14/1879".search(/\d/); // 32 
    1. Возвращает Boolean , вместо позиции, что может быть более ожидаемым.
    2. Работает быстрее. Однако разница ощутима только на весьма больших объёмах, проверить.
    'Hello, world!'.includes('o'); // true, в конце hello 'Hello, world!'.includes('o', 9); // false, после девятого символа нет 'o' 
    "Date of birth of Einstein: 3/14/1879".match(/(\d)/); // [0: "1879", 1: "1879", index: 32, input: "Date of birth of Einstein: 3/14/1879", length: 2] `Date of birth of Einstein: 3/14/1879; Date of birth of Hendrik Lorentz: 7/18/1853`.match(/(\d)\/(\d)\/(\d)/g); // [0: "3/14/1879", 1: "7/18/1853", length: 2] 

    Есть ещё методы RegExp#test или RegExp#exec , который так же могут быть использованы для проверки, но это уже совсем другая история.

    Как найти слово в строке JavaScript? Ищем символ в строке. Метод indexOf()

    Для поиска слова, символа или любой другой подстроки в строке в языке программирования JavaScript используют хорошо известный метод indexOf. В результате проверки метод возвращает позицию первого совпадения, если же совпадение по введённому вами символу найдено не будет, будет возвращено -1.

    Искомое слово или символ указываются первым параметром. Что касается второго параметра, то он необязателен. Зато с его помощью мы можем передать номер (индекс) символа или буквы, с которого надо начинать поиск. Важный момент: метод indexOf() чувствителен к регистру вводимых вами букв, слов и символов.

    Синтаксис метода предельно прост:

     
    строка.indexOf(первый параметр указывает, что ищем, [второй параметр определяет, откуда начинаем поиск]);

    Приведем примеры поиска слова в строке JavaScript

    В примере ниже у нас есть строка 'Я учусь в OTUS', причём мы ищем в строке слово 'учусь'. Метод вернёт нам индекс 2, т. к. именно с этой позиции начинается слово 'учусь' в строке. Тут стоит вспомнить, что индексация (подсчёт позиции) начинается с нуля, а не с единицы.

     
    let str = 'Я учусь в OTUS; console.log(str.indexOf('учусь'));

    В результате получим следующий вывод:

    В очередном примере в строке 'Я учу Java и учу JavaScript в OTUS' давайте найдём слово 'учу', но не первое его вхождение в строку, а второе. Следовательно, начнём поиск с 5-й позиции, указав это вторым параметром.

     
    let str = 'Я учу Java и учу JavaScript в OTUS'; console.log(str.indexOf('учу', 5));

    Проверка приведёт к возвращению числа 13, т. к. именно с этой позиции начинается второе слово «учу» в нашей строке.

    Давайте приведем ещё парочку примеров. В коде ниже, исследуемый нами метод поиска вернёт -1, ведь подстроки 'Go' в нашей строке попросту нет:

     
    let str = 'Я учусь в OTUS'; console.log(str.indexOf('Go'));

    В принципе, как видите, ничего сложного. Нам вернётся -1 и в случае, если мы будем искать одинаковые слова с разным регистром (OTUS не равно OtuS):

     
    let str = 'Я учусь в OTUS; console.log(str.indexOf(' OtuS'));

    Вернётся -1 и в последнем примере, ведь после позиции, которую мы выбрали вторым параметром для поиска, совпадения найдены не будут:

     
    let str = 'Я учусь в OTUS'; console.log(str.indexOf('учусь', 7));

    Проверка приведёт к следующему результату:

    Вот и всё, что можно сказать про простейший поиск слов и символов в строке JavaScript. Напоследок стоит упомянуть метод lastIndexOf() , тоже осуществляющий поиск символа, слова или любой подстроки в строке. Разница заключается лишь в том, что этот метод начинает искать с конца строки, а не с начала — в остальном он работает аналогично.

    Больше операций по поиску в строке JavaScript, включая дополнительные операции по работе с подстрокой, вы найдёте здесь.

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

    String.prototype.includes()

    Метод includes() проверяет, содержит ли строка заданную подстроку, и возвращает, соответственно true или false .

    Синтаксис

    str.includes(searchString[, position])

    Параметры

    Строка для поиска в данной строке.

    Позиция в строке, с которой начинать поиск строки searchString , по умолчанию 0.

    Возвращаемое значение

    true , если искомая строка была найдена в данной строке; иначе false .

    Описание

    Этот метод позволяет вам определять, содержит ли строка другую строку.

    Чувствительность к регистру символов

    Метод includes() является регистрозависимым. Например, следующее выражение вернёт false :

    "Синий кит".includes("синий"); // вернёт false 

    Примеры

    Использование includes()

    var str = "Быть или не быть вот в чём вопрос."; console.log(str.includes("Быть")); // true console.log(str.includes("вопрос")); // true console.log(str.includes("несуществующий")); // false console.log(str.includes("Быть", 1)); // false console.log(str.includes("БЫТЬ")); // false 

    Полифил

    Этот метод был добавлен в спецификации ECMAScript 2015 и может быть недоступен в некоторых реализациях JavaScript. Однако, можно легко эмулировать этот метод:

    if (!String.prototype.includes)  String.prototype.includes = function (search, start)  "use strict"; if (typeof start !== "number")  start = 0; > if (start + search.length > this.length)  return false; > else  return this.indexOf(search, start) !== -1; > >; > 

    Спецификации

    Specification
    ECMAScript Language Specification
    # sec-string.prototype.includes

    Поддержка браузерами

    BCD tables only load in the browser

    String.prototype.contains

    В Firefox с версии 18 по версию 39, этот метод назывался «contains». Он был переименован в «includes» в замечании баг 1102219 по следующей причине:

    Как было сообщено, некоторые сайты, использующие MooTools 1.2, ломаются в Firefox 17. Эта версия MooTools проверяет существование метода String.prototype.contains() и, если он не существует, добавляет свой собственный. С введением этого метода в Firefox 17, поведение этой проверки изменилось таким образом, что реализация String.prototype.contains() , основанная на MooTools, сломалась. В результате это изменение было отключено в Firefox 17. Метод String.prototype.contains() доступен в следующей версии Firefox — Firefox 18.

    MooTools 1.3 принудительно использует свою собственную версию метода String.prototype.contains() , так что использующие его веб-сайты не должны ломаться. Тем не менее, следует отметить, что сигнатура метода в MooTools 1.3 отличается от сигнатуры метода в ECMAScript 2015 (во втором аргументе). В MooTools 1.5+ сигнатура изменена для соответствия стандарту ES2015.

    В Firefox 48, метод String.prototype.contains() был удалён. Следует использовать только String.prototype.includes() .

    Смотрите также

    • Array.prototype.includes() Экспериментальная возможность
    • TypedArray.prototype.includes() (en-US) Экспериментальная возможность
    • String.prototype.indexOf()
    • String.prototype.lastIndexOf()
    • String.prototype.startsWith()
    • String.prototype.endsWith()

    Found a content problem with this page?

    • Edit the page on GitHub.
    • Report the content issue.
    • View the source on GitHub.

    This page was last modified on 7 авг. 2023 г. by MDN contributors.

    Проверьте, содержит ли строка другую строку в качестве подстроки в JavaScript

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

    1. Использование String.prototype.includes() функция

    The includes() можно использовать для проверки того, включает ли данная строка другую строку или нет. Он возвращается true если искомая строка находится в заданной строке; false в противном случае. Вот как будет выглядеть код:

    var source = 'Hello World' ;
    var target = 'llo' ;
    console . log ( source . includes ( target ) ) ;

    Этот метод был представлен в ES6 и пока может быть доступен не во всех реализациях JavaScript. Однако в MDN есть простой полифилл для этого метода:

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

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