Поиск конкретного слова из текста Js, включая специальные символы - PullRequest
0 голосов
/ 30 июня 2018

У меня есть массив, который я перебираю, извлекая слово за словом и сравнивая их, чтобы найти совпадения в большом тексте.

  var myString="I know the languages  C, C# and JAVA"
  var languages=['JAVA','C','Angular','C++','Python','C#'];
  for (var i=0;i<languages.length;i++){
      var myPattern = new RegExp('(\\w*'+languages[i]+'\\w*)','gi');
      var matches = myString.match(myPattern);
      if (matches != null)
      {
          console.log(languages[i]);
      }
  }

Regex выдает ошибку при достижении C # или C ++? Все, что можно извлечь как из них, так и из других, будет оценено. Примечание Мне по-прежнему необходимо экранировать другие специальные символы, такие как (',', '.', '|');

Ответы [ 2 ]

0 голосов
/ 30 июня 2018

Также вы можете использовать метод String includes(). Метод includes() определяет, содержит ли строка символы указанной строки. Этот метод возвращает true, если строка содержит символы, и false, если нет. Обратите внимание, что этот метод case sensitive.

var myString = 'I know the languages  C, C# and JAVA',
    languages = [ 'JAVA','C','Angular','C++','Python','C#' ];

for ( var i = 0; i < languages.length; i++ ) {
    if ( myString.includes( languages[ i ] ) ) console.log( languages[ i ] )
}
0 голосов
/ 30 июня 2018

Нет необходимости в регулярном выражении, это простая операция indexOf, которая дает даже "лучшие" результаты, чем регулярное выражение - например, Вы также можете указать, где строка была найдена в тексте.

const myString="I know the languages  C, C# and JAVA";
const languages=['JAVA','C','Angular','C++','Python','C#'];

languages.forEach(lang => {
  let x;
  if ((x = myString.indexOf(lang)) > -1) {
    console.log(`Found ${lang} at position ${x}`);
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...