3
votes

Supprimer les dernières parties d'une chaîne qui suit un délimiteur spécifique

J'ai des chaînes qui ressemblent à celles-ci

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

Ils sont délimités par le symbole de tiret - .

Maintenant, je veux couper la dernière partie de ceux-ci genre de chaînes et trouvez quelque chose comme

  • de aa-bbb-cc-d-ff-eee-gg à aa-bbb-cc-d // 3 parties supprimées
  • de aa-bb-ccc-d à aa-bb // 2 parties supprimées
  • de aaa-bbbb à aaa // 1 partie supprimée

ainsi de suite et ainsi de suite. Le nombre de portions à supprimer est également défini.

Je suis conscient que je peux simplement parcourir la longueur de ces chaînes en les divisant et en les concaténant comme un fou.

p>

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))

Mais je trouve cela douloureusement inélégant et amateur. Y a-t-il un autre moyen de mieux faire cela? De préférence une doublure qui fonctionne avec IE11. Mais d'autres approches qui ne se contentent pas de pirater les parties divisées fonctionneront également.


2 commentaires

Qu'entendez-vous par dernière portion ? Je vois que parfois vous supprimez 3 blocs, parfois 2 et aussi 1 partie. Quelle est la logique?


@molamk La quantité de portions à supprimer est également définie. . Je pense que nous pouvons le considérer comme un paramètre de fonction


3 Réponses :


2
votes

Une fois que vous avez un tableau de caractères alphabétiques, vous pouvez découper la partie souhaitée du tableau (en supprimant les parties inutiles), puis joindre par - 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 commentaires

C'est ce que je recherche. Ce n'est pas aussi court que je le voulais vraiment, mais c'est certainement des kilomètres mieux que ce que j'ai imaginé. Merci d'avoir répondu!



0
votes

Essayez ceci

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


1 commentaires

Merci d'avoir répondu! Mais malheureusement, cela ne semble pas fonctionner avec plus d'une partie supprimée



0
votes

Encore une solution:

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


1 commentaires

Merci pour la réponse. Mais c'est exactement la même chose que celle de @ CertainPerformance.