替换一行中转换为数组的字符串末尾的值?

时间:2019-04-06 18:24:46

标签: javascript

是否可以用一行代码替换数组中的最后一项?

我收到的信息:

return "my.long.string";

我想要什么:

return "my.long.output";

到目前为止的代码:

var value = "my.long.string";
var newValue = value.split(".").pop().join(".") + "output";

错误:

SyntaxError: Unexpected string

更新:

尼娜回答了。我也有一种情况,我需要在字符串的末尾插入一个值(在文件路径中添加名称)。与上面相同,但替换了最后一个点之前 处的所有内容。

var value = "my.long.string";
var result = value.split(".").slice(0, -1).join(".") + "_stats." + "output";

7 个答案:

答案 0 :(得分:5)

您可以切片数组并连接最后一个字符串。 Array#slice对数组末尾的偏移量取负值。

var value = "my.long.string";

value = value.split('.').slice(0, -1).concat('output').join('.');

console.log(value);

答案 1 :(得分:4)

您也不必将其转换为数组。您可以像这样使用lastIndexOf

const value = "my.long.string";

console.log(`${value.substring(0,value.lastIndexOf('.'))}.output`);

答案 2 :(得分:2)

您可以使用正则表达式(.*\.).*捕获所有内容,直到最后的.replace为止的最后一个部分都带有新字符串(Regex demo)。 $1从捕获组获取字符串

let str = "my.long.string"
let newStr = str.replace(/(.*\.).*/, `$1output`);
console.log(newStr)

答案 3 :(得分:0)

var value = "my.long.string";
var newValue = value.split('.').filter((val, idx, arr) => {
    return idx < arr.length - 1
}).concat('output').join('.');

答案 4 :(得分:0)

第一个解决方案

var value = "my.long.string";
var newValue = value.split('.').splice(0, value.match(/\./g).length).concat('output').join('.');
console.log(newValue);

第二个解决方案(较短)

var value = "my.long.string";
var newValue = value.split('.').fill('output', value.match(/\./g).length).join('.');
console.log(newValue);

答案 5 :(得分:-1)

您可以尝试以下代码。

var value = "my.long.string";
var newValue = value.replace(new RegExp(value.split(".").pop() + '$'), "output");

答案 6 :(得分:-1)

var value = "my.long.string";
var r = value.split(".").splice(-1, 1).join(".");
var result = r.".output";