我正在寻找一个函数,该函数移除字符串中除第一个之外的所有子字符串,因此,例如
function keepFirst(str, substr) { ... }
keepFirst("This $ is some text $.", "$");
应该返回:This $ is some text .
我可以使用split()
,然后使用for(){}
,但是有更好的解决方案吗?
发布于 2017-10-15 18:51:57
这可能是比较有效的最短代码。它使用破坏分配。
function keepFirst(str, substr) {
const [
first,
...rest
] = str.split(substr);
return first + (rest.length
? substr + rest.join("")
: "");
}
发布于 2017-10-15 18:50:52
该解决方案查找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'),
'');
}
https://stackoverflow.com/questions/46758642
复制相似问题