2017-02-13 102 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"; 
相关问题