2017-08-23 16 views
0

私はスライス()と検索()の組み合わせを使って最後にファイル拡張子を削除するために、指定された文字列を編集しようとしていました。しかし、search()を使用すると、var vNamePreparedが空になります。なぜlastIndexOf()が動作し、search()が動作しないのですか?

function site_change() { 
    var vDocGrabber = "indexmobile.html", 
     vNamePrepared = vDocGrabber.slice(0, vDocGrabber.search(".")); 
    /*transform vNamePrepared in some way*/ 
    document.getElementById("demo").innerHTML = vNamePrepared + ".php";} 

また、search()をlastIndexOf()に置き換えたそのコードは、望ましい結果をもたらしました。

function site_change() {  
    var vDocGrabber = "indexmobile.html", 
     vNamePrepared = vDocGrabber.slice(0, vDocGrabber.lastIndexOf(".")); 
    /*transform vNamePrepared in some way*/ 
    document.getElementById("demo").innerHTML = vNamePrepared + ".php";} 

--> indexmobile.php 

ここで検索()は動作しません。ピリオドのインデックスをslice()に整数として返しませんか?

最初の質問ですが、それが標準ではない場合はお詫び申し上げます。

+0

詳細情報(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/ search) –

+0

'String.search(String)'はありません。最も近いのは 'String.includes(String)'です。これはインデックスを返さない – adeneo

+1

@adeneo文字列が[String.search ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/search)。 –

答えて

5

searchは正規表現を受け入れ、.は正規表現の非改行文字と一致します。最初からlastIndexOfに相当するのはindexOfです。

-3

は個人的に私は別のブラウザでバグを作ってみたので、私はそれがより良いサポートを持っているので

代わりに私が.indexOfに頼る方法を.search使用することはありません、ここで悪名高いw3 site

+0

笑、なぜdownvoteを説明するために気をつけますか? –

+0

Qは「あなたは何を使っていますか/なぜですか?」とはあなたが「答える」ようなものではありませんでした。 – pnuts

2

から少し助けです"。"を処理しています。正規表現として。逃れるために

"を。":[検索]を

vDocGrabber.search('\\.') 
関連する問題