Как я могу извлечь "456" из "xxx_456", где xxx имеет неопределенную длину?
var str = "xxx_456"; var str_sub = str.substr(str.lastIndexOf("_")+1);
Если это не всегда три цифры в конце (и разделенные знаком подчеркивания). Если конечный разделитель не всегда является подчеркиванием, вы можете использовать регулярное выражение:
var pat = /([0-9]{1,})$/; var m = str.match(pat);
Простой regex для любого количества цифр в конце строки:
'xxx_456'.match(/\d+$/)[0]; //456
'xxx_4567890'.match(/\d+$/)[0]; //4567890
или действительно используйте split/pop:
('yyy_xxx_45678901').split(/_/).pop(); //45678901
Безумный подход с использованием регулярных выражений
"xxx_456".match(/...$/)[0] //456
вы можете просто разделить его и получить последний элемент
var string="xxx_456";
var a=string.split("_");
alert(a[1]); #or a.pop
вот моя пользовательская функция
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);
Эта функция работает для обратного индекса.
slice
отлично работает в IE и других браузерах, это часть спецификации и также самый эффективный метод:
alert("xxx_456".slice(-3));
//-> 456
slice Method ( String) - раздел MSDN
- Центр разработчиков Mozilla
alert("xxxxxxxxxxx_456".substr(-3))
предостережение: согласно mdc , несовместимо с IE
Метод substring позволяет указать начальный и конечный индекс:
var str = "xxx_456";
var subStr = str.substring(str.length - 3, str.length);