我有一个看起来像这样的字符串:
left 10 top 50
如何提取数字,而数字的范围是0到100,单词可以左/右上/下?感谢
答案 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);
答案 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;
}