2 votes

Je cherche le moyen le plus simple d'extraire une sous-chaîne inconnue d'une chaîne de caractères. (termes séparés par des barres obliques)

La chaîne initiale :
initString = '/digital/collection/music/bunch/of/other/stuff'

Ce que je veux :
music

  • Plus précisément, je veux tout terme (qui n'inclura jamais de barre oblique) qui viendrait entre collection/ y /bunch

Comment je procède :

if(initString.includes('/digital/collection/')){
    let slicedString = initString.slice(19); //results in 'music/bunch/of/other/stuff'
    let indexOfSlash = slicedString.indexOf('/'); //results, in this case, to 5
    let desiredString = slicedString.slice(0, indexOfSlash); //results in 'music'
}

Question :
Comment diable puis-je accomplir cela en javascript d'une manière plus élégante ?

  • J'ai cherché quelque chose comme un endIndexOf() qui remplacerait mon code dur .slice(19)
    • lastIndexOf() n'est pas ce que je recherche, car je veux l'index à la fin de la première instance de ma sous-chaîne /digital/collection/
  • Je cherche à réduire le nombre de lignes, et je n'ai rien trouvé qui ressemble à un .getStringBetween('beginCutoff, endCutoff')

Merci d'avance !

1voto

dmigo Points 559

Vous pouvez également utiliser des expressions régulières à cette fin.

const initString = '/digital/collection/music/bunch/of/other/stuff';
const result = initString.match(/\/digital\/collection\/([a-zA-Z]+)\//)[1];
console.log(result);

La sortie de la console est la suivante :

musique

1voto

muka.gergely Points 606

Si vous connaissez la chaîne initiale, et que vous avez la partie précédant la chaîne recherchée, alors l'extrait suivant vous renvoie la chaîne recherchée. Il n'est pas nécessaire de calculer les indices, ou quoi que ce soit d'autre.

// getting the last index of searchString
// we should get: music
const initString = '/digital/collection/music/bunch/of/other/stuff'
const firstPart = '/digital/collection/'

const lastIndexOf = (s1, s2) => {
  return s1.replace(s2, '').split('/')[0]
}

console.log(lastIndexOf(initString, firstPart))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X