2016-12-03 9 views
0

文:チェック文がフレーズが含まれている場合

  1. ねえのHello World <をチェックアウト - 世界はいいですこんにちは
  2. を含めるべきです! < - このあまりにHhhello世界<
  3. を含めるべきではない - - Hhello世界が<に動作してはならない
  4. が含まれるべき

var phraseToSearch = "Hello World";

を含めるべきではないノートを行いますsentence.ToLower().IndexOf(phraseToSearch.ToLower())だろう上記のすべての文を含むようには機能しませんが、結果には文1と文2のみを含める必要があります。

+0

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

答えて

3

正規表現を使用して、文字パターンと文字列を一致させることができます。

正規表現では、探している正確な文字をHello Worldとし、単語境界を\bとし、単語の境界をiの大文字と小文字を区別しない修飾語を使用します。

正規表現には、与えられた文字列の正規表現を実行するメソッド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(他のテキストの1つの側の空間、およびエンド付き)
  • Text ...(スペースで(それを囲むスペースで)

    • Textを合わせたいものがあります他)
    • Textの側の、スタート(独自に単なる文字列)

    それを行うための1つの方法は、正規表現なしに、ジュースです4つの条件(上記の各箇条書きのポイントごとに1つ)を入れて&&でそれらを結合しますが、それは乱雑なコードにつながります。

    もう1つの方法は、両方の文字列をスペースで区切り、一方の配列が別の配列のサブ配列であるかどうかを調べることです。

    しかし、私のソリューションでは正規表現が使用されています。これは文字列に対してテストできるパターンです。

    私たちのパターンすべき文字列のスペース/開始のための

    • ルック
    • 文字列の
    • チェック
    • thisに応じて文字列

    \bのスペース/終了のため

  • 見て、スペース、単語の分離子、およびストリングの終わりに一致します。これらはワード境界と呼ばれます。

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

    iマッチケースが鈍感:ここ

    はコードです。

  • 関連する問題