2016-12-03 4 views
0

Sentences:Проверьте предложение содержит фразу

  1. Эй фотографии Hello World < - должны быть включены
  2. привет мир хорош! < - ДОЛЖНО БЫТЬ ВКЛЮЧЕН
  3. Hhello Мир не должен работать < - НЕ ДОЛЖНО БЫТЬ ВКЛЮЧЕНЫ
  4. Это слишком Hhhello Мир < - НЕ ДОЛЖЕН БЫТЬ ВКЛЮЧЕН

var phraseToSearch = "Hello World";

ли примечание:sentence.ToLower().IndexOf(phraseToSearch.ToLower()) бы не будет работать, поскольку он будет включать все вышеприведенные предложения, в то время как результат должен включать только предложения 1 и 2

+0

'/ \ bhello \ sworld \ b/gi' – adeneo

ответ

3

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

Регулярное выражение просто ищет Hello World точные буквы, которые вы ищете с помощью \b границы слова и с помощью модификатора, нечувствительного к регистру i.

Regex имеет метод test, который будет запускать регулярное выражение для данной строки. Он вернет true, если регулярное выражение будет соответствовать.

const phraseToSearch = /\bhello world\b/i 
 

 
const str1 = 'Hey checkout Hello World' 
 
const str2 = 'hello world is nice!' 
 
const str3 = 'Hhello World should not work' 
 
const str4 = 'This too Hhhello World' 
 

 
console.log(
 
    phraseToSearch.test(str1), 
 
    phraseToSearch.test(str2), 
 
    phraseToSearch.test(str3), 
 
    phraseToSearch.test(str4) 
 
)

1

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

  • Text (с пробелами вокруг него)
  • ... Text (с пространством, с одной стороны, и в конце текста на другой)
  • Text ... (с пространством, с одной стороны и начало стороны на другую)
  • Text (только строка, сама по себе)

Один из способов сделать это, без регулярного выражения, является Jus t поставить 4 условия (по одному для каждой отметки выше) и объединить их с &&, но это приведет к беспорядочному коду.

Другим вариантом является разделение обеих строк на пробелы и проверка того, является ли один массив подмассивом другого.

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

Наша модель должна

  • Посмотрите на пространство/начало строки
  • Проверка на строку
  • Посмотрите на пространство/конец строки

\b, согласно this , будет соответствовать пробелам, разделителям слов и концам строк. Эти вещи называются ограничителями слов.

Вот код:

function doesContain(str, query){ // is query in str 
    return new RegExp("\b" + query + "\b", "i").test(str) 
} 

i делает случай матч нечувствительны.

Смежные вопросы