Wie kann ich "456" aus "xxx_456" extrahieren, wobei xxx eine unbestimmte Länge hat?
javascript
string
Ricky
quelle
quelle
Antworten:
Wenn es nicht immer drei Ziffern am Ende sind (und durch einen Unterstrich getrennt sind). Wenn das Endtrennzeichen nicht immer ein Unterstrich ist, können Sie Regex verwenden:
quelle
slice
funktioniert gut in IE und anderen Browsern, ist Teil der Spezifikation und auch die effizienteste Methode:alert("xxx_456".slice(-3)); //-> 456
Slice-Methode (Zeichenfolge) - MSDN-
Slice - Mozilla Developer Center
quelle
"xxx_456".slice(3)
"xxx_456".slice(0, -3)
Mit der Teilzeichenfolgenmethode können Sie den Start- und Endindex angeben:
var str = "xxx_456"; var subStr = str.substring(str.length - 3, str.length);
quelle
Sie können es einfach aufteilen und das letzte Element erhalten
var string="xxx_456"; var a=string.split("_"); alert(a[1]); #or a.pop
quelle
alert("xxxxxxxxxxx_456".substr(-3))
Vorbehalt: laut mdc nicht IE-kompatibel
quelle
slice
ist - siehe meine Antwort.Einfache Regex für eine beliebige Anzahl von Ziffern am Ende einer Zeichenfolge:
'xxx_456'.match(/\d+$/)[0]; //456 'xxx_4567890'.match(/\d+$/)[0]; //4567890
oder verwenden Sie Split / Pop in der Tat:
('yyy_xxx_45678901').split(/_/).pop(); //45678901
quelle
String.prototype.reverse( ) { return Array.prototype.slice.call(this) .reverse() .join() .replace(/,/g,'') }
mit einer Reverse-String-Methode
var str = "xxx_456" str = str.reverse() // 654_xxx str = str.substring(0,3) // 654 str = str.reverse() //456
Wenn Ihre umgekehrte Methode den String zurückgibt, verketten Sie die Methoden für eine sauberere Lösung.
quelle
Ein verrückter Regex-Ansatz
"xxx_456".match(/...$/)[0] //456
quelle
_
.Hier ist meine benutzerdefinierte Funktion
function reverse_substring(str,from,to){ var temp=""; var i=0; var pos = 0; var append; for(i=str.length-1;i>=0;i--){ //alert("inside loop " + str[i]); if(pos == from){ append=true; } if(pos == to){ append=false; break; } if(append){ temp = str[i] + temp; } pos++; } alert("bottom loop " + temp); } var str = "bala_123"; reverse_substring(str,0,3);
Diese Funktion funktioniert für den umgekehrten Index.
quelle
"xxxxxxx_456".slice(-3)
Sie können das Ergebnis auch mit
substring
undlastIndexOf
- erhaltenalert("xxx_456".substring("xxx_456".lastIndexOf("_")+1));
quelle
Obwohl dies eine alte Frage ist, um die Antwort von user187291 zu unterstützen
Bei fester Länge des gewünschten Teilstrings würde ich
substr()
mit negativem Argument für seine kurze und lesbare Syntax verwenden"xxx_456".substr(-3)
Derzeit ist es mit gängigen Browsern kompatibel und noch nicht streng veraltet.
quelle