2016-12-11 5 views
1

私はvar content = this.innerHTMLを使用して、次を得る、としましょう:複数のオプションのためのindexOf

w here&nbsp;</div> 

indexOf(または他の方法)を使用して、私は、「スペース」のいずれかを持っている第一の位置をチェックしたい「<」 「& nbsp」です。

この場合、1(「w」の後に)になります。

私が混乱しているのは、これらの3つの選択肢のいずれかがある最初の位置を確認する方法です。個々の「オプション」を確認するのにDo...whileを使用しますか?

答えて

2

。 Regexは一度にすべてを学ぶことが少しですが、このサンプルコードについて説明します。

角括弧を使用して文字セットを表すことができます。たとえば、[ <]は「スペースか小文字のいずれかに一致します」と表示されます。 パイプ|を使用して、あるパターンまたは別のパターンと一致させる可能性がある場合、別々の可能性を切り分けることができます。これは、改行なしのHTMLエンティティの一致を考慮する方法です。

var string = 'w here&nbsp;</div>', 
 
    index = string.search(/[ <]|&nbsp;/) 
 
console.log(index) //=> 1

+0

ありがとうございます。 'exec'と' search'の間では、パフォーマンス面でより効率的ですか?ありがとう。 –

+1

'exec'はより多くの情報を提供しますが、戻り値として配列を構築する必要がないため、' search'はより効果的です。 'search'は普通の数字を返します。 – gyre

+0

iを参照してください。返信してくれてありがとう! –

1

の正規表現を使用すると、|)のいずれかと一致することを意味します。あなたが見つけたものそれは便利だ場合それはまた、あなたを教えてくれます:あなたはおそらくRegular Expression (Regex)String#search方法を探している

function check(str) { 
 
    var m =/|<|&nbsp;/.exec(str); 
 
    if (!m) { 
 
    console.log("Not found in '" + str + "'"); 
 
    return; 
 
    } 
 
    console.log("'" + m[0] + "' found at index " + m.index + " in '" + str + "'"); 
 
} 
 

 
check("w here&nbsp;</div>"); 
 
check("where&nbsp;</div>"); 
 
check("where</div>");

+0

返信いただきありがとうございます。 'exec'と' search'の間では、パフォーマンス面でより効率的ですか?ありがとう。 –

+1

@steveKim:私はそれが本当に重要だとは思っていません。 'exec'はより多くの情報を返します。これは便利なことかもしれませんが、もっと多くの作業をする必要があるかもしれません。 (もちろん、インプリメンテーションが背後で仕事をしていて、インデックスを返すことは完全に可能です。)しかし、問題を起こすにはタイトなループで何十万回もコールする必要があります。問題がある場合は、ターゲット環境の違いをテストしてください。 –

+0

ありがとうT.J.とても有難い! =) –

関連する問題