如何从Javascript中的字符串中获取数字?

时间:2014-11-11 12:11:59

标签: javascript

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

left 10 top 50

如何提取数字,而数字的范围是0到100,单词可以左/右上/下?感谢

6 个答案:

答案 0 :(得分:3)

尝试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]

答案 1 :(得分:1)

将此字符串放在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 :(得分:0)

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

var arr = "left 10 top 50".split(" ");

var a = +arr[1];
var b = +arr[3];

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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/

答案 5 :(得分:0)

如果你想通过不同的关键字动态地尝试它,请尝试以下方法:

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;
}