252 votes

Récupérer le dernier élément d'un tableau de chaînes divisées

J'ai besoin d'obtenir le dernier élément d'un tableau divisé avec plusieurs séparateurs. Les séparateurs sont des virgules et des espaces. S'il n'y a pas de séparateurs, la chaîne originale doit être retournée.

Si la chaîne de caractères est "comment allez-vous aujourd'hui ?", elle devrait renvoyer "aujourd'hui ?".

Si l'entrée était "hello", la sortie devrait être "hello".

Comment puis-je faire cela en JavaScript ?

3voto

Tony Points 6793

Et si vous ne voulez pas construire un tableau ...

var str = "how,are you doing, today?";
var res = str.replace(/(.*)([, ])([^, ]*$)/,"$3");

La répartition en anglais est la suivante :

/(anything)(any separator once)(anything that isn't a separator 0 or more times)/

Le remplacement dit simplement de remplacer la chaîne entière par ce qui se trouve après le dernier séparateur.

Vous pouvez donc voir comment cela peut être appliqué de manière générale. Notez que la chaîne originale n'est pas modifiée.

3voto

Saurabh Mistry Points 3325

Il existe plusieurs façons d'obtenir les derniers éléments

let input='one,two,three,four';

let output1 = input.split(',').pop();
console.log('output1 =',output1);

let split = input.split(',');
let output2 = split[split.length-1];
console.log('output2=',output2);

let output3 = input.split(',').reverse()[0];
console.log('output3=',output3);

let output4 = input.split(',').slice(-1)[0];
console.log('output4=',output4);

2voto

David Vicente Points 1922

Cette méthode est facile à comprendre et très courte.

const output = input.split(',').pop().split(' ').pop();

0voto

user7425063 Points 1
var title = 'fdfdsg dsgdfh dgdh dsgdh tyu hjuk yjuk uyk hjg fhjg hjj tytutdfsf sdgsdg dsfsdgvf dfgfdhdn dfgilkj,n, jhk jsu wheiu sjldsf dfdsf hfdkdjf dfhdfkd hsfd ,dsfk dfjdf ,yier djsgyi kds';
var shortText = $.trim(title).substring(1000, 150).split(" ").slice(0, -1).join(" ") + "...More >>";

0voto

tnong Points 19

Vous pouvez accéder directement à l'index du tableau :

var csv = 'zero,one,two,three'; csv.split(',')[0]; //result: zero csv.split(',')[3]; //result: three

3 votes

Bonjour tnong, bienvenue sur SO ! Je pense que cette réponse ne prend pas en compte le séparateur d'espace comme demandé dans la question.

2 votes

Cette réponse ne prend pas en charge les tableaux de chaînes de caractères de longueur arbitraire.

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