我有一个这样的字符串:
dir/subdir/file-hash.ext
知道上面文本中的“哈希”部分总是8个数字/字母长,我怎样才能使这个字符串如下所示:
dir/subdir/file.ext
唯一可能改变的是/
开头有或没有 a 的字符串。
我不知道我怎么能做到这一点
我有一个这样的字符串:
dir/subdir/file-hash.ext
知道上面文本中的“哈希”部分总是8个数字/字母长,我怎样才能使这个字符串如下所示:
dir/subdir/file.ext
唯一可能改变的是/
开头有或没有 a 的字符串。
我不知道我怎么能做到这一点
使用正则表达式:
var str2 = str1.replace(/-.{8}\.ext$/, '.ext');
如果扩展名可能发生变化(例如,.odt
代替.txt
, 使用
var str2 = str1.replace(/-.{8}(\.[\d\w]+)$/, '$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