Як я можу витягти "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);
slice чудово працює в IE та інших браузерах, це частина специфікації і це також найефективніший метод:
alert("xxx_456".slice(-3));
//-> 456
"xxx_456".slice(3)
"xxx_456".slice(0, -3)
Метод підрядка дозволяє вказати індекс початку та кінця:
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
String.prototype.reverse( ) {
return Array.prototype.slice.call(this)
.reverse()
.join()
.replace(/,/g,'')
}
з використанням методу зворотного рядка
var str = "xxx_456"
str = str.reverse() // 654_xxx
str = str.substring(0,3) // 654
str = str.reverse() //456
якщо ваш зворотний метод повертає рядок, то ланцюжок методів для більш чистого рішення.
Шалений підхід до регулярних виразів
"xxx_456".match(/...$/)[0] //456
_.
ось моя спеціальна функція
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);
Ця функція працює для зворотного індексу.
"xxxxxxx_456".slice(-3)
Також ви можете отримати результат, використовуючи substringта lastIndexOf-
alert("xxx_456".substring("xxx_456".lastIndexOf("_")+1));
Незважаючи на те, що це старе питання, щоб підтримати відповідь на user187291
У разі фіксованої довжини бажаного підрядка я б використовував substr()негативний аргумент для його короткого та читабельного синтаксису
"xxx_456".substr(-3)
На даний момент він сумісний із загальноприйнятими браузерами і ще не є суто застарілим.