Wie bekomme ich das letzte Zeichen einer Zeichenfolge?

526

So erhalten Sie das letzte Zeichen der Zeichenfolge:

"linto.yahoo.com."

Das letzte Zeichen dieser Zeichenfolge ist "."

Wie finde ich das?

Linto PD
quelle
Könnten Sie diese Antwort akzeptieren , da sie die beste ist und zuerst angezeigt werden sollte?
Sharku

Antworten:

995

Eine elegante und kurze Alternative ist die String.prototype.sliceMethode.

Nur von:

str.slice(-1);

Ein negativer Startindex schneidet die Zeichenfolge length+index, auf length, wobei Index -1wird das letzte Zeichen extrahiert:

"abc".slice(-1); // "c";
CMS
quelle
9
Randnotiz: Arrays haben auch eine slice()Methode. - Ihre Funktionalität ist konzeptionell ähnlich (Teilkopien) -------- (Nur für den Fall, dass Sie Code lesen und sehen .slice())
Peter Ajtai
1
Was meinst du mit einem "UTF-8-String"? Der Satz macht keinen Sinn. FWIW jedoch sind JavaScript-Zeichenfolgen selbst lustige Bestien: Sie sind Sequenzen von vorzeichenlosen 16-Bit-Ganzzahlwerten. Wenn die Absicht Ihrer Zeichenfolge darin besteht, Zeichen zu speichern, gibt der obige Code den letzten 16-Bit-Wert zurück, was nicht schön wäre, wenn es der zweite Teil eines Ersatzpaars wäre. Aber was genau meinst du mit "UTF-8-String"? UTF-8 ist ein Codierungsschema, das möglicherweise sinnvoll ist, wenn Sie ein Byte-Array haben, aber in Bezug auf Zeichenfolgen überhaupt nichts bedeutet. Nur neugierig.
Ray Toal
4
Abgestimmt, weil dies die Frage nicht beantwortet. Es wird davon ausgegangen, dass der Benutzer nur das Zeichen entfernen möchte. Was ist jedoch, wenn Sie das letzte Zeichen erfassen und basierend auf dem, was es ist, antworten müssen? Die Antworten von str.charAt () sind die richtigen.
Gregtczap
6
@Egg, scheint, dass Sie mein Beispiel nicht ausprobiert haben, str.slice(-1)erhält tatsächlich das letzte Zeichen der Zeichenfolge (wie es das OP erfordert), so als ob Sie es verwendet hätten str.charAt(str.length - 1), versuchen Sie : "abc".slice(-1). Ich habe hier eine Verwendung String.prototype.slicemit einem negativen Index gezeigt. str.slice(-n)Ruft die letzten nZeichen der ursprünglichen Zeichenfolge als neuen Zeichenfolgenwert ab. Weitere Informationen: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
CMS
9
@CMS Sie haben Recht, Ihre Methode greift tatsächlich nach dem letzten Zeichen der Zeichenfolge, ohne es zu kürzen. Schöne elegante Methode auch. Aus irgendeinem Grund dachte ich, es würde diese Zeichen kürzen und eine gekürzte Saite zurückgeben. Tut mir leid, ich fühle mich wie ein Idiot, weil ich es nicht zuerst versucht habe.
Gregtczap
97

Verwendung charAt:

Die charAt () -Methode gibt das Zeichen am angegebenen Index in einer Zeichenfolge zurück.

Sie können diese Methode in Verbindung mit der lengthEigenschaft einer Zeichenfolge verwenden, um das letzte Zeichen in dieser Zeichenfolge abzurufen.
Zum Beispiel:

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

Krapfen
quelle
64
str.charAt(str.length - 1)

In einigen Browsern können Sie (als nicht standardmäßige Erweiterung) Folgendes verkürzen:

str[str.length - 1];
Matthew Flaschen
quelle
50

Sie können dies auf unterschiedliche Weise erreichen, jedoch mit unterschiedlicher Leistung.

1. Verwenden der Klammernotation:

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

Es wird jedoch nicht empfohlen, Klammern zu verwenden. Überprüfen Sie die Gründe hier

2. charAt [index]:

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

Dies ist unter anderem lesbar und am schnellsten. Es wird am meisten empfohlen.

3. Teilzeichenfolge:

str.substring(str.length - 1);

4. Scheibe:

str.slice(-1);

Es ist etwas schneller als Teilzeichenfolge.

Sie können die Leistung überprüfen hier

Mit ES6:

Sie können verwenden str.endsWith("t");

Es wird jedoch im IE nicht unterstützt. Weitere Details zu Enden finden Sie hier

Code_Mode
quelle
2
Auf aktuellen Maschinen müssen keine Leistungseinbußen vorgenommen werden. Verwenden Sie die präziseste Lösung. Meine Stimme ist aufstr.slice(-1);
avalanche1
1
Ich bin mir nicht sicher, wie endsWithdas hier passt, das macht etwas ganz anderes.
John Montgomery
38

Verwenden Sie substr mit Parameter -1 :

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

gleich "."

Hinweis:

Verwenden Sie eine negative Startnummer, um Zeichen vom Ende der Zeichenfolge zu extrahieren (dies funktioniert in IE 8 und früheren Versionen nicht).

Spikolynn
quelle
3
Scheint so, als wäre dieses so kürz wie Slice (), ich frage mich, welches besser und schneller ist.
Stramin
12

Eine einfache Möglichkeit, dies zu tun, ist die Verwendung dieser :)

var word = "waffle"
word.endsWith("e")
Connie
quelle
1
Schön und einfach +1
Julian
1
Wirklich gute Ergänzung zu ES6, aber es funktioniert nicht im IE, wenn Sie es unterstützen müssen, es kann jedoch polygefüllt werden .
Sanjsanj
Ich verstehe nicht, wie dies die Frage überhaupt beantwortet. Das Abrufen des letzten Zeichens einer Zeichenfolge unterscheidet sich grundlegend von der Überprüfung, ob es mit einem bestimmten Zeichen übereinstimmt.
John Montgomery
8

Sie können das letzte Zeichen wie folgt erhalten:

var lastChar=yourString.charAt(yourString.length-1);
Colin Hebert
quelle
4

Verwenden Sie die JavaScript- Funktion charAt , um ein Zeichen an einer bestimmten 0-indizierten Position abzurufen . Verwenden Sie die Länge , um herauszufinden, wie lang der String ist. Sie möchten das letzte Zeichen, also das ist Länge - 1. Beispiel:

var word = "linto.yahoo.com.";
var last = word.charAt(word.length - 1);
alert('The last character is:' + last);
Adam
quelle
4
var firstName = "Ada";
var lastLetterOfFirstName = firstName[firstName.length - 1];
Salar
quelle
Während dieses Code-Snippet die Frage lösen kann, hilft eine Erklärung wirklich, die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in Zukunft beantworten und diese Personen möglicherweise die Gründe für Ihren Codevorschlag nicht kennen. Bitte versuchen Sie auch, Ihren Code nicht mit erklärenden Kommentaren zu überfüllen. Dies verringert die Lesbarkeit sowohl des Codes als auch der Erklärungen!
Kayess
0

Sie können diese einfache ES6-Methode verwenden

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


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

Dies funktioniert in jedem Browser.

vdegenne
quelle
0

Sie können Folgendes verwenden. In diesem Fall des letzten Zeichens ist es ein Overkill, aber für einen Teilstring ist es nützlich:

var word = "linto.yahoo.com.";
var last = ".com.";
if (word.substr(-(last.length)) == last)
alert("its a match");
Gauravsa
quelle
-1
>Try this...     

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