我正在寻找一个函数来删除除第一个字符串之外的字符串中出现的所有子字符串,例如
function keepFirst(str, substr) { ... }
keepFirst("This $ is some text $.", "$");
应该返回:This $ is some text .
我可以使用split()
然后for(){}
来做,但有更好的解决方案吗?
答案 0 :(得分:0)
此解决方案找到rep
第一次出现的索引,并删除其后的所有rep
。
console.log(keepFirst("This $ is some text $$ with $ signs.", "$"));
function keepFirst(str, rep) {
var fInd = str.indexOf(rep);
var first = str.substring(0, fInd + rep.length);
var rest = str.substring(fInd + rep.length);
return first + rest.replace(
new RegExp(rep.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), 'g'),
'');
}
答案 1 :(得分:0)
这可能是最有效的最短代码。它使用destructuring assignment。
function keepFirst(str, substr) {
const [
first,
...rest
] = str.split(substr);
return first + (rest.length
? substr + rest.join("")
: "");
}