2

我有一个这样的字符串:

dir/subdir/file-hash.ext

知道上面文本中的“哈希”部分总是8个数字/字母长,我怎样才能使这个字符串如下所示:

dir/subdir/file.ext

唯一可能改变的是/开头有或没有 a 的字符串。

我不知道我怎么能做到这一点

4

2 回答 2

4

使用正则表达式:

var str2 = str1.replace(/-.{8}\.ext$/, '.ext');

如果扩展名可能发生变化(例如,.odt代替.txt, 使用

var str2 = str1.replace(/-.{8}(\.[\d\w]+)$/, '$1');
于 2013-09-10T11:18:45.777 回答
1

由于您具有固定长度,因此您不需要使用正则表达式。使用(last)indexOfsubstr

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
于 2013-09-10T11:22:18.403 回答