So wählen Sie die letzten beiden Zeichen einer Zeichenfolge aus


193

Ich muss die letzten beiden Zeichen aus der Variablen auswählen, egal ob es sich um Ziffern oder Buchstaben handelt.

Beispielsweise:

var member = "my name is Mate";

Ich möchte die letzten beiden Buchstaben der Zeichenfolge in der memberVariablen anzeigen.

Antworten:



23

Versuchen Sie dies, beachten Sie, dass Sie den Endindex in nicht angeben müssen substring.

var characters = member.substr(member.length -2);

Ihre ursprüngliche Antwort war wahrscheinlich angemessener. Nach MDN der substrdocs , „Microsoft JScript unterstützt keine negativen Werte für den Startindex.“

23

EDIT: 2020: Verwendung string.slice(-2)wie andere sagen - siehe unten.

jetzt sollte 2016 nur string.substr(-2)den Trick machen (nicht Teilzeichenfolge (!))

entnommen aus MDN

Syntax

str.substr(start[, length])

Parameter

Anfang

Ort, an dem mit dem Extrahieren von Zeichen begonnen werden soll. Wenn eine negative Zahl angegeben wird, wird sie als strLength + start behandelt, wobei strLength die Länge des Strings ist (wenn start beispielsweise -3 ist, wird sie als strLength - 3 behandelt). Länge Optional. Die Anzahl der zu extrahierenden Zeichen.

EDIT 2020

Sagt MDN

Warnung: Obwohl String.prototype.substr (…) nicht streng veraltet ist (wie in "Aus den Webstandards entfernt"), wird es als Legacy-Funktion betrachtet und sollte nach Möglichkeit vermieden werden. Es ist nicht Teil der JavaScript-Kernsprache und wird möglicherweise in Zukunft entfernt.


1
"Microsoft JScript unterstützt keine negativen Werte für den Startindex. Um diese Funktion in JScript zu verwenden, können Sie den folgenden Code verwenden ..." - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… (wohingegen sie für Slice keine Polyfill haben: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… )
George Birbilis

Beachten Sie, dass sich JScript nicht im Browser befindet. Es handelt sich hauptsächlich um eine Skriptsprache für die Arbeit mit der Windows Script Host-Automatisierung (ähnlich wie bei VBScript). Daher ist es logisch, dass zu dieser Zeit solche Methoden nicht enthalten waren. Neuere Windows-Versionen fördern PowerShell mit a kryptische Syntax. Wie auch immer, der Kommentar war, dass Slice im Fall von JScript ein besserer Kandidat als Substr ist, da es negative Indizes unterstützt. Docs.microsoft.com/en-us/previous-versions/windows/…
George Birbilis

9

Das folgende Beispiel verwendet slice()mit negativen Indizes

var str = 'my name is maanu.';
console.log(str.slice(-3));     // returns 'nu.' last two
console.log(str.slice(3, -7)); // returns 'name is'
console.log(str.slice(0, -1));  // returns 'my name is maanu'


5

Du kannst es versuchen

member.substr(member.length-2);

Sie haben member.length von Ihrem Startindex verpasst :)
mattytommo

Ah cool, ich habe meine Antwort aktualisiert, um zu reflektieren, danke TJ und Ibu :)
Mattytommo

1
@TJCrowder: Ziemlich sicher, dass der negative Index als Startposition für IE8 und niedriger nicht funktioniert.

1
@amnotiam: Danke, sehr gut zu wissen! Ich habe gerade getestet und sicher nicht auf IE7 oder IE8 funktioniert (und daher vermutlich nicht auf IE6). IE9 im Standardmodus war in Ordnung (aber nicht kompatibel). Ich benutze es nie substrund jetzt wünschte ich, ich könnte den Thread finden, in dem mir ein selbstgefälliger Idiot das schwer gemacht hat (und insbesondere keine negativen Indizes verwendet) - ich kann es jetzt rechtfertigen! :-)
TJ Crowder

3

Wenn es eine ganze Zahl ist, brauchen Sie einen Teil von ....

var result = number.toString().slice(-2);

2

Sie sollten dazu Teilzeichenfolge und nicht jQuery verwenden.

Versuchen Sie so etwas:

member.substring(member.length - 2, member.length)

W3Schools (nicht offiziell, aber gelegentlich hilfreich): http://www.w3schools.com/jsref/jsref_substring.asp

Hinzufügen eines MDN-Links wie vom Kommentator angefordert: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring


3
Bitte geben Sie Links zu einer offiziellen Dokumentation wie MSDN oder MDN, nicht zu w3fools :)
jbabey

w3schools ist nicht "offiziell", hat aber im Allgemeinen zuverlässige Informationen. MSDN ist offiziell, aber IE-spezifisch und hat nichts mit Firefox, Safari usw. zu tun
Matt

fügte den Link zu dem Kommentar hinzu, als Sie dies posteten
Matt

1
var member = "my name is maanu";

var answer=member.substring(0,member.length - 2);

alert(answer);

1
Was macht der Code? Bitte schreiben Sie eine Erklärung, was dies erreicht.
DNKROZ

3
Um fair zu sein, ist die Frage sehr spezifisch, was der Code tun muss, daher ist eine Antwort, die (im Wesentlichen) aus einer Codezeile besteht, ziemlich selbsterklärend.
Anaximander

1
Die Code-Ausgabe ist 'nu'. Nimm die letzten 2 Zeichen aus dem Wort.
Biju s

7
Mir scheint, die Code-Ausgabe lautet "Mein Name ist maa" (alles ~ außer ~ den letzten beiden Buchstaben), was nicht die Frage ist, wenn ich sie richtig verstanden habe.
Ewino
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.