2017-02-13 110 views
0

我想重命名文檔,我想刪除最後'\'後的所有內容,然後給它另一個名稱。刪除最後一個''後不工作的所有內容

我做到了這樣,但它似乎並不奏效:

var newDocName = documentPath.replace(/\/$/, ''); 
var newDocName = newDocName + "\test.pdf"; 

'\'沒有得到的第一行代碼後取出。

任何想法我做錯了什麼?

+2

錯誤的正則表達式。目前它搜索以'/'結尾的字符串,然後搜索字符串的結尾。所以如果在最後的'/'後面有內容,它就不會找到任何東西。您需要將其更改爲\\作爲反斜槓,然後添加一些量詞來檢查最後一個\後面是否有文本。你可能只是使用indexOf最後一個斜槓並從那裏切片而不是正則表達式。 – Shilly

+0

如何通過瀏覽器訪問本地文件系統? ''? – zer00ne

回答

4

/\/$/意味着你要匹配/,如果它在字符串意義的最後一個字符的代碼將取代最後的/當且僅當它在字符串的末尾時。

如果你想在最後\後刪除的內容,那麼你可以使用split組合拆就\ S中的字符串,然後使用slice得到一切,但最後一個元素。最後,使用join將它們全部重新組合。

var uri = 'path\\to\\my\\file.ext'; 
 
var parts = uri.split('\\'); 
 
var withoutFile = parts.slice(0, parts.length - 1); 
 
var putItBackTogether = withoutFile.join('\\'); 
 
var voila = putItBackTogether + '\\new-file.name'; 
 
console.log(voila);

+2

只有完整的答案,直到現在。其他答案忘記最後一個反斜槓後面有一個文件名。 – Shilly

+1

優秀的答案,謝謝! – user3378165

1

它是正斜槓,使用\\ istead。

0

嘗試用它替換:

var newDocName = documentPath.replace(/\\/$/, ''); 
0

您正則表達式格式錯誤:你應該逃避你的反引號(\)。

因此,它可能是:

var newDocName = documentPath.replace(/[\\/]$/, ''); 
var newDocName = newDocName + "\\test.pdf"; 

這個正則表達式將在您路徑的末尾($)搜索\/。您可以使用regex101來測試您的正則表達式。

你也應該考慮不使用正則表達式,當你不需要他們:

var newDocName = documentPath[documentPath.length - 1] == "\\" ? documentPath + "test.pdf" : documentPath + "\\test.pdf"; 
相關問題