2013-08-05 2 views
1

У меня есть строка «RowNumber5», теперь я хочу получить числовое значение «5» из этой строки с помощью Javascript.Получение числового значения из альфа-числовой строки в javascript

Примечание: числовое значение будет всегда в конце, после алфавитов, что означает, что числовое значение никогда не будет происходить между алфавитами. Пример -

Result45 - Yes 
Result45Abc - Never 

я могу получить это "5" на некоторые вещи, как этот

var t = "Ruby12"; 
var y = parseInt(t.split('').reverse().join("")); 
if(!isNaN(y)) { 
    y = y.toString().split('').reverse().join(""); 
} 
else { 
    y = ""; 
} 
console.log(y); 

Любой выстрел путь? или Лучший подход для этого?

+0

Это не сработает? /.*([0-9]+)$/ – MightyPork

+0

Вы всегда знаете альфа-часть этой строки? если это так, вы можете заменить эту подстроку на «'и parseInt остальные – Kuro

+0

@Kuro: альфа-часть не является динамической. –

ответ

2

Это то, что регулярные выражения были сделаны для!

var matches = /\d+$/.exec("Ruby12"); 
matches[0]; //returns 12 

var matches = /\d+$/.exec("sfwfewcsd098"); 
matches[0]; //returns 098 

var matches = /\d+$/.exec("abc"); //matches returns null 
+0

Спасибо. Это выглядит хорошо, но ошибка /\d+$/.exec("abc")[0]. Поэтому перед первым элементом необходимо проверить значение null. –

+1

Может быть что-то вроде var number = /\d+$/.exec("abc ")? /\d+$/.exec("abc")[0]: ""; –

0

Я бы с разделяй и властвуй метод, работая через все строки, которые могут содержать номера:

var t = "Ruby12"; 
function get_numbers(str) { 
    var parts = str.split(""), nums = ""; 
    for(var i = 0, len = parts.length; i < len; i++) { 
     nums += (isNaN(parts[i])) ? "" : parts[i].toString(); 
    } 
    return(nums); 
} 

var numbers = get_numbers(t); 
alert(numbers); 

который дал бы вы «12».

1

Вот регулярное выражение решение:

// input string 
var t = "Ruby12"; 

var num = null;  
var match = t.match(/([0-9]+)$/);  
if(match!=null) num = parseInt(match[1]); 

// num now contains null or number 

// debug 
console.log(num); 
1

Попробуйте использовать это регулярное выражение

var s = "gdgdfg45"; 
var matches = s.match(/\d+$/); 
console.log(matches[0]); 
Смежные вопросы