如何在Javascript中从字符串中获取数字

How to get numbers from string in Javascript?

本文关键字:字符串 获取 数字 Javascript      更新时间:2023-09-26

我有一个字符串,看起来像这样:

left 10 top 50

当数字可以在0到100之间,单词可以在左/右上/下时,我如何提取数字?感谢

尝试match()

var text = "top 50 right 100 left 33";
var arr = text.match(/[0-9]{1,3}/g);
console.log(arr); //Returns an array with "50", "100", "33"

您也可以使用['d+](数字)而不是[0-9]

将这个字符串放在一个var中,如果你知道每个数字都会被一个空格分隔,你可以很容易地执行以下操作:

var string = "top 50 left 100";
    // split at the empty space
    string.split(" ");
var numbers = new Array();
// run through the array
for(var i = 0; i < string.length; i++){
    // check if the string is a number
    if(parseInt(string[i], 10)){
        // add the number to the results
        numbers.push(string[i]);
    }
}

现在,您可以将整个比特封装在一个函数中,以便在任何时候运行它:

function extractNumbers(string){
    var temp = string.split(" ");
    var numbers = new Array();
    for(var i = 0; i < temp.length; i++){
        if(parseInt(temp[i], 10)){
            numbers.push(temp[i]);
        }
    }
    return numbers;
}
var myNumbers = extractNumbers("top 50 left 100");

更新

在阅读了@AmirPopovich的回答后,它帮助我进一步改进了它:

if(!isNaN(Number(string[i]))){
    numbers.push(Number(string[i]));
}

这将返回任何类型的数字,而不仅仅是Integers。然后,您可以从技术上扩展字符串原型,从任何字符串中提取数字:

String.prototype.extractNumbers = function(){ /*The rest of the function body here, replacing the keyword 'string' with 'this' */ };

现在您可以执行var result = "top 50 right 100".extractNumbers();

拆分并提取第2个和第4个令牌:

var arr = "left 10 top 50".split(" ");
var a = +arr[1];
var b = +arr[3];
var str = 'left 10 top 50';
var splitted = str.split(' ');
var arr = [];
for(var i = 0 ; i < splitted.length ; i++)
{
    var num = Number(splitted[i]);
    if(!isNaN(num) && num >= 0 && num <= 100){
        arr.push(num);
    }
}
console.log(arr);

JSFIDDLE

如果你想通过不同的关键字动态地使用它,可以尝试这样的方法:

var testString = "left 10 top 50";
var result = getNumber("top", testString);
function getNumber(keyword, testString) {
  var tmpString = testString;
  var tmpKeyword = keyword;
  tmpString = tmpString.split(tmpKeyword + " ");
  tmpString = tmpString[1].split(' ')[0];
  return tmpString;
}
var myArray = "left 10 top 50".split(" ");
var numbers;
for ( var index = 0; index < myArray.length; index++ ) {
    if ( !isNaN(myArray[index]))
       numbers= myArray[index]
}

在下面的链接中找到工作示例http://jsfiddle.net/shouvik1990/cnrbv485/