我想重命名文檔,我想刪除最後'\'
後的所有內容,然後給它另一個名稱。刪除最後一個''後不工作的所有內容
我做到了這樣,但它似乎並不奏效:
var newDocName = documentPath.replace(/\/$/, '');
var newDocName = newDocName + "\test.pdf";
的'\'
沒有得到的第一行代碼後取出。
任何想法我做錯了什麼?
我想重命名文檔,我想刪除最後'\'
後的所有內容,然後給它另一個名稱。刪除最後一個''後不工作的所有內容
我做到了這樣,但它似乎並不奏效:
var newDocName = documentPath.replace(/\/$/, '');
var newDocName = newDocName + "\test.pdf";
的'\'
沒有得到的第一行代碼後取出。
任何想法我做錯了什麼?
/\/$/
意味着你要匹配/
,如果它在字符串意義的最後一個字符的代碼將取代最後的/
當且僅當它在字符串的末尾時。
如果你想在最後\
後刪除的內容,那麼你可以使用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);
只有完整的答案,直到現在。其他答案忘記最後一個反斜槓後面有一個文件名。 – Shilly
優秀的答案,謝謝! – user3378165
它是正斜槓,使用\\ istead。
嘗試用它替換:
var newDocName = documentPath.replace(/\\/$/, '');
您正則表達式格式錯誤:你應該逃避你的反引號(\
)。
因此,它可能是:
var newDocName = documentPath.replace(/[\\/]$/, '');
var newDocName = newDocName + "\\test.pdf";
這個正則表達式將在您路徑的末尾($
)搜索\
或/
。您可以使用regex101來測試您的正則表達式。
你也應該考慮不使用正則表達式,當你不需要他們:
var newDocName = documentPath[documentPath.length - 1] == "\\" ? documentPath + "test.pdf" : documentPath + "\\test.pdf";
錯誤的正則表達式。目前它搜索以'/'結尾的字符串,然後搜索字符串的結尾。所以如果在最後的'/'後面有內容,它就不會找到任何東西。您需要將其更改爲\\作爲反斜槓,然後添加一些量詞來檢查最後一個\後面是否有文本。你可能只是使用indexOf最後一個斜槓並從那裏切片而不是正則表達式。 – Shilly
如何通過瀏覽器訪問本地文件系統? ''? – zer00ne