Wie kann ich die letzten Zeichen einer Zeichenfolge erhalten?

739

ich habe

var id="ctl03_Tabs1";

Wie kann ich mit JavaScript die letzten fünf Zeichen oder das letzte Zeichen erhalten?

user695663
quelle
6
Um den letzten Charakter zu bekommen, wäre die beste Option id.charAt (id.length-1)
Dilhan Jayathilake
64
Hinweis für die Leser: Lesen Sie unbedingt die erste Antwort nach, insbesondere die von @Terence.
Offirmo
2
Mögliches Duplikat, wie man das letzte Zeichen einer Zeichenkette erhält?
Stephan Weinhold

Antworten:

1085

EDIT: Wie andere bereits betont haben, verwenden Sie slice(-5)anstelle von substr. In der .split().pop()Lösung am Ende dieser Antwort finden Sie jedoch einen anderen Ansatz.

Ursprüngliche Antwort:

Sie möchten die Javascript-Zeichenfolgenmethode in .substr()Kombination mit der .lengthEigenschaft verwenden.

var id = "ctl03_Tabs1";
var lastFive = id.substr(id.length - 5); // => "Tabs1"
var lastChar = id.substr(id.length - 1); // => "1"

Dadurch beginnen die Zeichen bei id.length - 5 und werden, da das zweite Argument für .substr () weggelassen wird, bis zum Ende der Zeichenfolge fortgesetzt.

Sie können die .slice()Methode auch verwenden , wie andere unten ausgeführt haben.

Wenn Sie nur nach den Zeichen nach dem Unterstrich suchen, können Sie Folgendes verwenden:

var tabId = id.split("_").pop(); // => "Tabs1"

Dadurch wird die Zeichenfolge in ein Array mit dem Unterstrich aufgeteilt und das letzte Element aus dem Array "entfernt" (die gewünschte Zeichenfolge).

Jamon Holmgren
quelle
5
Die erste Lösung kann kürzer und schneller gemacht werden, siehe meine Antwort unten. Ich stimme jedoch der Split- und Pop-Idee in dieser besonderen Situation zu.
Terence
3
Im Vergleich zu .slice (-5) und .substr (Länge - 5) .split().pop()ist dies ein großer Leistungshit. Wenn Sie dies in einer Schleife verwenden und die Leistung von entscheidender Bedeutung ist, sollten Sie dies berücksichtigen.
Nwayve
7
In Ihrem Test sind .split().pop()es immer noch 5 Millionen Operationen pro Sekunde. Es ist kein Leistungsproblem, bis es ein Leistungsproblem ist. ;)
Jamon Holmgren
1
@ HutchMoore Du bist richtig. Ich habe meine Antwort bearbeitet, um zu erwähnen, dass slicedies an dieser Stelle eine bessere Option ist.
Jamon Holmgren
1
Wenn Sie versuchen , bewerben sliceoder substrauf einer Zahl (int), konvertiert sie zunächst in einem String. ZBmyVar.toString().slice(-5)
dnns
803

Nicht benutzen .substr(). Verwenden Sie .slice()stattdessen die Methode, da sie browserübergreifend kompatibel ist (siehe IE).

const id = "ctl03_Tabs1";
console.log(id.slice(id.length - 5)); //Outputs: Tabs1
console.log(id.slice(id.length - 1)); //Outputs: 1

substr () mit negativem Wert funktioniert im IE nicht

Terence
quelle
6
Ja, Slice akzeptiert negative Werte, was großartig ist! slice()Referenz: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Offirmo
3
Ich bevorzuge diese Antwort, obwohl die akzeptierte gut funktioniert.
Dave Watts
3
Dies sollte die Antwort sein, Slice auf diese Weise zu verwenden ist auch performanter: jsperf.com/slice-vs-substr-and-length
thevinchi
Chrome 55 scheint zu denken, dass Substr 20% schneller ist
Fantapop
6
Ich gehe davon aus, dass Slice nur funktioniert, wenn es konsistent ist. Was wäre, wenn das Ende wäre _Tabs15? Scheibe (-5) würde nur greifen abs15? Split / Pop funktioniert viel besser für verschiedene Längen ...
Brian Ramsey
66

Sie können die substr () -Methode mit einer negativen Startposition verwenden, um die letzten n Zeichen abzurufen. Zum Beispiel erhält dies die letzten 5:

var lastFiveChars = id.substr(-5);
user682701
quelle
Beste und kurze Antwort. Sie müssen die ursprüngliche Zeichenfolgenlänge nicht kennen (für aktuelle Browser, daher schließen wir IE aus)
Thanh Trung
60

Das letzte Zeichen zu erhalten ist einfach, da Sie Zeichenfolgen als Array behandeln können:

var lastChar = id[id.length - 1];

Um einen Abschnitt eines Strings abzurufen , können Sie die substr- Funktion oder die substring- Funktion verwenden:

id.substr(id.length - 1); //get the last character
id.substr(2);             //get the characters from the 3rd character on
id.substr(2, 1);          //get the 3rd character
id.substr(2, 2);          //get the 3rd and 4th characters

Der Unterschied zwischen substrund substringbesteht darin, wie der zweite (optionale) Parameter behandelt wird. In substrist es die Anzahl der Zeichen aus dem Index (der erste Parameter). In substringist es der Index, wo das Schneiden von Zeichen enden soll.

Zirak
quelle
1
Sie haben einen Tippfehler susbstr sollte substr sein
George
24

Das folgende Skript zeigt das Ergebnis für das Abrufen der letzten 5 Zeichen und des letzten 1 Zeichens in einer Zeichenfolge mithilfe von JavaScript:

var testword='ctl03_Tabs1';
var last5=testword.substr(-5); //Get 5 characters
var last1=testword.substr(-1); //Get 1 character

Ausgabe :

Tabs1 // Habe 5 Zeichen

1 // 1 Zeichen erhalten

Tamil
quelle
4
Nicht kompatibel mit IE, siehe meine Antwort.
Terence
7

Überprüfen Sie die Teilzeichenfolgenfunktion .

So erhalten Sie den letzten Charakter:

id.substring(id.length - 1, id.length);
Kauer
quelle
7

Es ist nicht erforderlich, eine substrMethode zu verwenden, um ein einzelnes Zeichen eines Strings zu erhalten!

Am Beispiel von Jamon Holmgren können wir die substr-Methode ändern und einfach die Array-Position angeben:

var id = "ctl03_Tabs1";
var lastChar = id[id.length - 1]; // => "1"
Nello Ollen
quelle
5

Mit der Substr-Funktion können Sie ein Minus verwenden, um das letzte Zeichen zu erhalten.

var string = "hello";
var last = string.substr(-1);

Es ist sehr flexibel. Zum Beispiel:

// Get 2 characters, 1 character from end
// The first part says how many characters
// to go back and the second says how many
// to go forward. If you don't say how many
// to go forward it will include everything
var string = "hello!";
var lasttwo = string.substr(-3,2);
// = "lo"
Adam Whateverson
quelle
4

Ein Weg wäre slice, wie folgt zu verwenden:

var id="ctl03_Tabs1";
var temp=id.slice(-5);

so dass der Wert tempwäre "Tabs1".

Keivan
quelle
3

Wenn Sie nur das letzte Zeichen oder ein beliebiges Zeichen an einer bekannten Position haben möchten, können Sie einfach einen String als Array eingeben! - Strings können in Javascript iteriert werden -

Var x = "hello_world";
 x[0];                    //h
 x[x.length-1];   //d

Wenn Sie jedoch mehr als nur ein Zeichen benötigen, ist die Verwendung von Spleiß effektiv

x.slice(-5);      //world

In Bezug auf Ihr Beispiel

"rating_element-<?php echo $id?>"

Um die ID zu extrahieren, können Sie ganz einfach split + pop verwenden

Id= inputId.split('rating_element-')[1];

Dies gibt die ID zurück oder undefiniert, wenn nach 'bewertungselement' keine ID war :)

Zalaboza
quelle
2

Angenommen, Sie vergleichen den Teilstring mit dem Ende eines anderen Strings und verwenden das Ergebnis als Booleschen Wert. Sie können die String-Klasse erweitern, um dies zu erreichen:

String.prototype.endsWith = function (substring) {
  if(substring.length > this.length) return false;
  return this.substr(this.length - substring.length) === substring;
};

So können Sie Folgendes tun:

var aSentenceToPonder = "This sentence ends with toad"; 
var frogString = "frog";
var toadString = "toad";
aSentenceToPonder.endsWith(frogString) // false
aSentenceToPonder.endsWith(toadString) // true
Mikeborgh
quelle
1
var id="ctl03_Tabs1";
var res = id.charAt(id.length-1);

Ich fand diese Frage und durch einige Nachforschungen fand ich, dass dies der einfachste Weg ist, den letzten Charakter zu bekommen.

Wie andere erwähnt und der Vollständigkeit halber hinzugefügt haben, um die letzten 5 zu erhalten:

var last5 = id.substr(-5);
Andrew Mallonee
quelle
0

Dieser entfernt das Komma, wenn es das letzte Zeichen in der Zeichenfolge ist.

var str = $("#ControlId").val();

if(str.substring(str.length-1)==',') {

  var stringWithoutLastComma = str.substring(0,str.length-1);    

}
vijay yaragall
quelle
4
Dies hat fast keinen Einfluss auf die ursprüngliche Frage.
Silasjmatson
0

Ich habe tatsächlich das folgende Problem und so habe ich es mit Hilfe der obigen Antwort gelöst, aber ein anderer Ansatz beim Extrahieren der ID aus einem Eingabeelement.

Ich habe eine mit einer Datei eingereichte Eingabe angehängt

id="rating_element-<?php echo $id?>"

Und wenn diese Schaltfläche angeklickt wird, möchte ich nur die ID (die die Nummer ist) oder die PHP-ID ($ id) extrahieren .

Also hier was ich mache.

 $('.rating').on('rating.change', function() {
            alert($(this).val());
           // console.log(this.id);
           var static_id_text=("rating_element-").length;       
           var product_id =  this.id.slice(static_id_text);       //get the length in order to deduct from the whole string    
          console.log(product_id );//outputs the last id appended
        });
Daniel Adenew
quelle
0

Letzte 5

var id="ctl03_Tabs1";
var res = id.charAt(id.length-5)
alert(res);

Letzte

   
 var id="ctl03_Tabs1";
 var res = id.charAt(id.length-1)
alert(res);

Rajmobiapp
quelle
Wechseln Sie für das erste Beispiel charAtzu substr. Das ist charAtder fünftletzte .
Regular Joe
-1

Ich bin sicher, das wird funktionieren ...

var string1="myfile.pdf"
var esxtenion=string1.substr(string1.length-4)

Der Wert von extensionwird sein".pdf"

Jamil Moughal
quelle