2016-12-03 63 views
0

句:檢查句子中包含一個短語

  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一起使用的單詞邊界和使用不區分大小寫的修飾符的\b

正則表達式有一個方法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(只是字符串,對自己)

一種方式做到這一點,沒有一個正則表達式,是絕對把4個條件(上面的每個項目符合一個)和&&聯繫起來,但這會導致代碼混亂。

另一種選擇是將兩個字符串拆分爲空格,並檢查一個數組是否是另一個數組的子數組。

但是,我的解決方案使用正則表達式 - 這是一種可以在字符串上測試的模式。

我們的模式應該

  • 查找字符串的空間/啓動
  • 檢查字符串
  • 查找字符串

\b的空間/結束,根據this ,將匹配空格,單詞分隔符和字符串末尾。這些東西被稱爲詞邊界。

下面是代碼:

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

i的使匹配大小寫不敏感的。

相關問題