Wie kann ich "456" aus "xxx_456" extrahieren, wobei xxx eine unbestimmte Länge hat?
Wie kann ich "456" aus "xxx_456" extrahieren, wobei xxx eine unbestimmte Länge hat?
Antworten:
var str = "xxx_456";
var str_sub = strsstrstr (str.lastIndexOf ("_") + 1);
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:
var pat = / ([0-9] {1,}) $ /;
var m = str.match (pat);
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
"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);
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
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.
Ein verrückter Regex-Ansatz
"xxx_456".match(/...$/)[0] //456
_.
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.
"xxxxxxx_456".slice(-3)
Sie können das Ergebnis auch mit substringund lastIndexOf- erhalten
alert("xxx_456".substring("xxx_456".lastIndexOf("_")+1));
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.