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?

Linto PD
la source
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";
CMS
la source
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

Donut
la source
64
str.charAt(str.length - 1)

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

str[str.length - 1];
Matthew Flaschen
la source
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

Code_Mode
la source
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).

Spikolynn
la source
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")
Connie
la source
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);
Colin Hebert
la source
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);
Adam
la source
4
var firstName = "Ada";
var lastLetterOfFirstName = firstName[firstName.length - 1];
Salar
la source
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.

vdegenne
la source
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");
Gauravsa
la source
-1
>Try this...     

console.log("linto.yahoo.com.".charAt("linto.yahoo.com.".length-1));
Vishal
la source