2

別の文字列の文字列部分を見つけようとしています。そして、私は呼び出された関数を見つけて、search()これを試しました:

if("http://www.google.de".search("http://") > 0){
  alert('with http');    
} else {
  alert('no http');   
}

no httpたとえそれがhttp://その一部であっても、それは私に与えています。ここにフィドルがあります: http://jsfiddle.net/xXTuY/2/

私を助けてもらえますか?

4

2 に答える 2

8

まず、String#search文字列ではなく正規表現を期待します。非正規表現に遭遇した場合、それを 経由で正規表現に変換しようとしnew RegExp(patt)ます。文字列の場合、文字列を正規表現パターンとして扱います。これは、検索文字列に正規表現で特別な意味を持つ文字が含まれている場合、検索が予期しない動作をすることを意味します (文字列が有効な正規表現でない場合は、必要以上に一致したり、必要以上に一致したり、構文エラーをスローしたりすることさえあります)。indexOf代わりに使用してください。

次に、最初の一致の位置searchindexOf返します。一致が見つからない場合は -1 を返します。これは、戻り値が 0 未満の場合、何も見つからなかったことを意味します。戻り値がゼロの場合、一致は文字列の先頭で行われました。

また、次の便利なショートカットがあることにも注意してくださいx != -1: ビットごとの否定~x

if("http://www.google.de".indexOf("http://") > -1){
  alert('with http');    
} else {
  alert('no http');   
}
于 2013-04-28T06:16:02.843 に答える
1

"http://www.google.de".search("http://")0 を返します。0 は 0 未満ではないため、条件は false と評価されます。

于 2013-04-28T06:05:37.320 に答える