comment obtenir le dernier caractère d'une chaîne?


526

Comment obtenir le dernier caractère de la chaîne:

"linto.yahoo.com."

Le dernier caractère de cette chaîne est "."

Comment trouver ça?


pourriez-vous accepter cette réponse, car elle est la meilleure et doit être affichée en premier.
Sharku

Réponses:


995

Une alternative élégante et courte, c'est la String.prototype.sliceméthode.

Juste par:

str.slice(-1);

Un index de début négatif tranche la chaîne de length+index, à length, étant index -1, le dernier caractère est extrait:

"abc".slice(-1); // "c";

9
Remarque: les tableaux ont également une slice()méthode. - Leur fonctionnalité est conceptuellement similaire (copies partielles) -------- (Juste au cas où vous lisez du code et voyez .slice())
Peter Ajtai

1
Qu'entendez-vous par une "chaîne UTF-8"? La phrase n'a aucun sens. FWIW cependant, les chaînes JavaScript sont elles-mêmes des bêtes drôles: ce sont des séquences de valeurs entières 16 bits non signées. Si l'intention de votre chaîne est de stocker des caractères, le code ci-dessus renvoie la dernière valeur de 16 bits, ce qui ne serait pas joli s'il s'agissait de la deuxième partie d'une paire de substitution. Mais encore une fois, que voulez-vous dire exactement par "chaîne UTF-8"? UTF-8 est un schéma de codage qui pourrait avoir du sens si vous aviez un tableau d'octets, mais ne signifie rien du tout en ce qui concerne les chaînes. Juste curieux.
Ray Toal

4
Voté car cela ne répond pas à la question. Cela suppose que l'utilisateur souhaite simplement supprimer le caractère, mais que se passe-t-il si vous devez capturer le dernier caractère et répondre en fonction de ce qu'il est? Les réponses str.charAt () sont les bonnes.
gregtczap

6
@Egg, semble que vous n'avez pas essayé mon exemple, str.slice(-1)ne se fait le dernier caractère de la chaîne (comme OP nécessaire), tout comme si vous avez utilisé str.charAt(str.length - 1), essayez: "abc".slice(-1). Je montrais ici une utilisation de String.prototype.sliceavec un indice négatif. str.slice(-n)obtiendra les derniers ncaractères de la chaîne d'origine en tant que nouvelle valeur de chaîne. Plus d'informations: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
CMS

9
@CMS Vous avez raison, votre méthode récupère en fait le dernier caractère de la chaîne sans le rogner. Belle méthode élégante aussi. Pour une raison quelconque, je pensais qu'il allait couper ces caractères et retourner une chaîne coupée. Désolé pour ça, je me sens idiot de ne pas l'avoir essayé en premier.
gregtczap

98

Utilisation charAt:

La méthode charAt () renvoie le caractère à l'index spécifié dans une chaîne.

Vous pouvez utiliser cette méthode conjointement avec la lengthpropriété d'une chaîne pour obtenir le dernier caractère de cette chaîne.
Par exemple:

const myString = "linto.yahoo.com.";
const stringLength = myString.length; // this will be 16
console.log('lastChar: ', myString.charAt(stringLength - 1)); // this will be the string


64
str.charAt(str.length - 1)

Certains navigateurs vous permettent (en tant qu'extension non standard) de raccourcir ceci à:

str[str.length - 1];

50

Vous pouvez y parvenir de différentes manières mais avec des performances différentes,

1. Utilisation de la notation entre parenthèses:

var str = "Test"; var lastLetter = str[str.length - 1];

Mais il n'est pas recommandé d'utiliser des crochets. Vérifiez les raisons ici

2. charAt [index]:

var lastLetter = str.charAt(str.length - 1)

Ceci est lisible et rapide entre autres. C'est le moyen le plus recommandé.

3. sous-chaîne:

str.substring(str.length - 1);

4. tranche:

str.slice(-1);

C'est légèrement plus rapide que la sous-chaîne.

Vous pouvez vérifier les performances ici

Avec ES6:

Vous pouvez utiliser str.endsWith("t");

Mais il n'est pas pris en charge dans IE. Vérifiez plus de détails sur les endsWith ici


2
Pas besoin de réduire les performances sur les machines actuelles. Utilisez la solution la plus concise. Mon vote est surstr.slice(-1);
avalanche1

1
Je ne sais pas comment ça va endsWithici, cela fait quelque chose de complètement différent.
John Montgomery

38

Utilisez substr avec le paramètre -1 :

"linto.yahoo.com.". substr (-1);

équivaut à "."

Remarque:

Pour extraire des caractères de la fin de la chaîne, utilisez un numéro de début négatif (cela ne fonctionne pas dans IE 8 et versions antérieures).


3
On dirait que celui-ci est aussi court que slice (), je me demande lequel est meilleur et plus rapide.
stramin

12

Un moyen simple de le faire est d'utiliser ceci :)

var word = "waffle"
word.endsWith("e")

1
Nice and simple +1
Julian

1
Très bon ajout à ES6 mais il ne fonctionne pas dans IE si vous devez le prendre en charge, il peut cependant être polyfilled .
sanjsanj

Je ne vois pas du tout comment cela répond à la question, obtenir le dernier caractère d'une chaîne est complètement différent de vérifier s'il correspond à un caractère spécifique.
John Montgomery

8

Vous pouvez obtenir le dernier caractère comme ceci:

var lastChar=yourString.charAt(yourString.length-1);

4

Utilisez la fonction JavaScript charAt pour obtenir un caractère à une position indexée 0 donnée. Utilisez la longueur pour connaître la longueur de la chaîne. Vous voulez que le dernier caractère soit donc la longueur - 1. Exemple:

var word = "linto.yahoo.com.";
var last = word.charAt(word.length - 1);
alert('The last character is:' + last);

4
var firstName = "Ada";
var lastLetterOfFirstName = firstName[firstName.length - 1];

Bien que cet extrait de code puisse résoudre la question, y compris une explication aide vraiment à améliorer la qualité de votre message. N'oubliez pas que vous répondrez à la question des lecteurs à l'avenir et que ces personnes ne connaissent peut-être pas les raisons de votre suggestion de code. Essayez également de ne pas surcharger votre code avec des commentaires explicatifs, cela réduit la lisibilité du code et des explications!
kayess

0

Vous pouvez utiliser cette méthode ES6 simple

const lastChar = (str) => str.split('').reverse().join(',').replace(',', '')[str.length === str.length + 1 ? 1 : 0];


// example
console.log(lastChar("linto.yahoo.com."));

Cela fonctionnera dans tous les navigateurs.


0

Vous pouvez utiliser ce qui suit. Dans ce cas de dernier caractère, c'est une exagération mais pour une sous-chaîne, son utile:

var word = "linto.yahoo.com.";
var last = ".com.";
if (word.substr(-(last.length)) == last)
alert("its a match");

-1
>Try this...     

console.log("linto.yahoo.com.".charAt("linto.yahoo.com.".length-1));
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.