簡體   English   中英

在字符串中僅保留一次出現的子字符串

[英]Keep only one occurrence of substring in a string

我正在尋找一個函數,該函數除去字符串中除第一個字符串外的所有子字符串,因此例如

function keepFirst(str, substr) { ... }
keepFirst("This $ is some text $.", "$");

應該返回: This $ is some text .

我可以先使用split()然后再使用for(){} ,但是有更好的解決方案嗎?

此解決方案找到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'), ''); } 

這可能是效率最高的最短代碼。 它使用解構分配

function keepFirst(str, substr) {
  const [
    first,
    ...rest
  ] = str.split(substr);

  return first + (rest.length
    ? substr + rest.join("")
    : "");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM