Подстрока с обратным индексом
Как я могу извлечь "456 "из" xxx_456", где xxx имеет неопределенную длину?
10 ответов:
var str = "xxx_456"; var str_sub = str.substr(str.lastIndexOf("_")+1);Если это не всегда три цифры в конце (и разделены подчеркиванием). Если конечный разделитель не всегда является подчеркиванием, то вы можете использовать регулярное выражение:
var pat = /([0-9]{1,})$/; var m = str.match(pat);
slice
отлично работает в IE и других браузерах, это часть спецификации, и это самый эффективный метод тоже:alert("xxx_456".slice(-3)); //-> 456
на подстрока метод позволяет определить начальный и конечный индекс:
var str = "xxx_456"; var subStr = str.substring(str.length - 3, str.length);
вы можете просто разделить его и получить последний элемент
var string="xxx_456"; var a=string.split("_"); alert(a[1]); #or a.pop
alert("xxxxxxxxxxx_456".substr(-3))
нюанс: по данным mdc, не совместим с IE
вот моя пользовательская функция
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);
эта функция работает для обратного индекса.
String.prototype.reverse( ) { return Array.prototype.slice.call(this) .reverse() .join() .replace(/,/g,'') }
используя обратный метод String
var str = "xxx_456" str = str.reverse() // 654_xxx str = str.substring(0,3) // 654 str = str.reverse() //456
Если ваш обратный метод возвращает строку, то цепочка методов для более чистого решения.