删除特定分隔符后面的字符串的最后一部分

时间:2019-02-07 07:19:39

标签: javascript arrays string

我有一些像这样的字符串

aa-bbb-cc-d-ff-eee-gg aa-bb-ccc-d aaa-bbbb

它们由破折号-分隔。

现在我要修剪此类字符串的最后一部分,并提出类似的内容

  • aa-bbb-cc-d-ff-eee-ggaa-bbb-cc-d //删除了3个部分
  • aa-bb-ccc-daa-bb //删除了2个部分
  • aaa-bbbbaaa //删除了1个部分

等等。还定义了要删除的部分数量。

我知道我可以通过拆分并像疯子一样将它们串联来遍历这些字符串的长度。

function splitParts(str, parts){
   let len = str.split('-').length;
   let output = "";

   for(let i = 0; i < len - parts; i++){
       output += !i ? str.split('-')[i] : "-" + str.split('-')[i];
   }

   return output;
}

console.log(splitParts("aa-bb-ccc-dd-eee", 1))

但是我发现它令人痛苦地显得优雅而业余。还有其他更好的方法吗?最好是一个与IE11配合使用的衬管。但是,其他方法不仅可以破解各个部分,也可以使用。

3 个答案:

答案 0 :(得分:2)

一旦有了字母字符数组,就可以slice {所需的部分(删除不需要的部分),然后通过- s加入:

const str = "aa-b-ccc-gg-dddd-e";
const arr = str.split('-');
const parts = 1;

const output = arr
  .slice(0, arr.length - parts)
  .join('-');
console.log(output)

答案 1 :(得分:0)

尝试一下

var abc='sad-ioioiio-sdsd';
var cd=abc.split('-');
cd.splice(-1,1);
console.log(cd.join('-'));

答案 2 :(得分:0)

又一个解决方案:

  function splitParts(str, parts) {
    return str
      .split('-')
      .slice(0, str.split('-').length - parts)
      .join('-');
  }