Je dois 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éparateur, il devrait retourner la chaîne d'origine.
Si la chaîne est "comment allez-vous, aujourd'hui?" il devrait revenir "aujourd'hui?"
Si l'entrée était "hello", la sortie devrait être "hello".
Comment puis-je faire cela en JavaScript?
var str = "hello,how,are,you,today?";
var pieces = str.split(/[\s,]+/);
À ce stade, pieces
est un tableau et pieces.length
contient la taille du tableau. Pour obtenir le dernier élément du tableau, cochez pieces[pieces.length-1]
. S'il n'y a pas de virgules ni d'espaces, il affichera simplement la chaîne telle qu'elle a été donnée.
alert(pieces[pieces.length-1]); // alerts "today?"
Il y a un one-liner pour tout. :)
var output = input.split(/[, ]+/).pop();
var item = "one,two";
var lastItem = item.split(",").pop(-1);
Est-ce que ça ne marche pas?
Vous pouvez également envisager d'inverser votre tableau et prendre le premier élément. De cette façon, vous n’avez pas à connaître la longueur, mais cela n’apporte aucun avantage réel et l’inconvénient que l’opération inverse peut prendre plus de temps avec les grands tableaux:
array1.split(",").reverse()[0]
C'est facile cependant, mais modifie également le tableau d'origine en question. Cela pourrait ou non être un problème.
Référence: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse
Vous voudrez probablement utiliser ceci cependant:
array1.split(",").pop()
Et si vous ne voulez pas construire un tableau ...
var str = "how,are you doing, today?";
var res = str.replace(/(.*)([, ])([^, ]*$)/,"$3");
La ventilation en anglais est:
/(anything)(any separator once)(anything that isn't a separator 0 or more times)/
Le remplacement indique simplement le remplacement de la chaîne entière par le contenu 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 d'origine n'est pas modifiée.
array.split(' ').slice(-1)[0]
Le meilleur jamais et mon préféré.
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
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 >>";