我有一个这样的字符串:
dir/subdir/file-hash.ext
知道上面文本中的“哈希”部分总是8个数字/字母长,我该怎么做这个字符串如下所示:
dir/subdir/file.ext
唯一可能改变的是字符串在开头是否有/
。
我不知道如何实现这个
答案 0 :(得分:4)
使用正则表达式:
var str2 = str1.replace(/-.{8}\.ext$/, '.ext');
如果扩展程序可能会更改(例如.odt
而不是.txt
,请使用
var str2 = str1.replace(/-.{8}(\.[\d\w]+)$/, '$1');
答案 1 :(得分:1)
由于您有固定长度,因此无需使用正则表达式。使用(last)indexOf
和substr
。
var path = "dir/subdir/file-01234567.ext"; // or "/dir/subdir/file-01234567.ext"
var pos = path.lastIndexOf("."); // find the last `.`
path = path.substr(0, pos - 8) + path.substr(pos); // dir/subdir/file-.ext
如果您想要它而不使用尾随-
:
path = path.substr(0, pos - 9) + path.substr(pos); // dir/subdir/file.ext