如何在 JavaScript 中的文件名和文件扩展名之间添加一个随机字符串一行?

fre*_*ent 1 javascript split join splice

我想在文件名中添加一个哈希字符串,所以我尝试重命名该字符串。

这就是我所拥有的:

var x = "puh.jpg";
var y = x.split(".");
y.splice(1,0,"foo");
var z = y.join(".");
console.log(z)
Run Code Online (Sandbox Code Playgroud)

哪个正确返回:puh.foo.jpg.

问题:
这可以在一行中完成并且无需声明辅助变量吗?

谢谢!

Poi*_*nty 5

您可以使用正则表达式轻松完成此操作(以您需要使用的名称的复杂性为模):

var y = x.replace(/^([^.]*)\.(.*)$/, '$1.foo.$2');
Run Code Online (Sandbox Code Playgroud)

在正则表达式中,我用来( )创建(其中 2 个)。第一组匹配名称中除句点之外的所有字符,直到将.名称与文件扩展名分开。(如果扩展名可能根本不存在,那么看起来就像是^([^.]*)\.?(.*)$使“.”可选。)第二组获取名称的其余部分(扩展名)。

在替换字符串中,结构“$1”和“$2”被扩展为原始字符串中与这两个组匹配的部分。