删除最后一个'\'后不工作的所有内容
我想重命名文档,我想删除最后'\'
后的所有内容,然后给它另一个名称。删除最后一个''后不工作的所有内容
我做到了这样,但它似乎并不奏效:
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