2017-08-23 64 views
0

我正在嘗試編輯給定的字符串,通過使用slice()和search()的組合來刪除最後的文件擴展名。但是,使用search()時,var vNamePrepared會變空。爲什麼lastIndexOf()的作品和搜索()不?

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

或者,用lastIndexOf()替換search()的精確代碼會產生所需的結果。

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 

爲什麼search()在這裏不起作用?它不會將整個週期的索引作爲整數返回到slice()中嗎?

第一個問題,道歉,如果它不符合標準。

+0

的更多信息[搜索](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/搜索) –

+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

個人而言,我從來沒有使用.search方法,因爲我已經拿出蟲子在不同的瀏覽器

相反,我依靠.indexOf,因爲它有更好的支持,這裏是從臭名昭著的w3 site

+0

哈哈,小心解釋爲什麼downvote? –

+0

Q是* not *「你用什麼/爲什麼?*這似乎是你在'回答'。 – pnuts

2

一點幫助它正在處理「。」作爲一個正則表達式。

逃脫 「」:

vDocGrabber.search('\\.') 
相關問題