Удалить последнюю часть / строки строки, которая следует за определенным разделителем - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть строки, которые выглядят так:

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

Они разделены символом тире -.

Теперь яхотите обрезать последнюю часть этих строк и придумать что-то вроде

  • из aa-bbb-cc-d-ff-eee-gg в aa-bbb-cc-d // удалены 3 части
  • из aa-bb-ccc-d вaa-bb // удалено 2 части
  • из aaa-bbbb в aaa // удалено 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 голосов
/ 07 февраля 2019

Попробуйте это

var abc='sad-ioioiio-sdsd';
var cd=abc.split('-');
cd.splice(-1,1);
console.log(cd.join('-'));
0 голосов
/ 07 февраля 2019

Еще одно решение:

  function splitParts(str, parts) {
    return str
      .split('-')
      .slice(0, str.split('-').length - parts)
      .join('-');
  }
0 голосов
/ 07 февраля 2019

Если у вас есть массив буквенных символов, вы можете 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...