我试图设置我的页面,以便用户能够键入像“25a89ss15s9 8 63”这样的字符串,并提醒用户“25,89,15,9, 8,63“,然后进一步提醒用户”8,9,15,25,63,89“。所以我试图从指定的字符串中分离整数,然后对它们进行排序。 关于如何将它们分成数组或其他东西的任何想法?我已经尝试了几个类似问题的例子,但它们似乎只能用一个整数。从Javascript中的字符串中提取多个整数
任何帮助,将不胜感激,谢谢。
我试图设置我的页面,以便用户能够键入像“25a89ss15s9 8 63”这样的字符串,并提醒用户“25,89,15,9, 8,63“,然后进一步提醒用户”8,9,15,25,63,89“。所以我试图从指定的字符串中分离整数,然后对它们进行排序。 关于如何将它们分成数组或其他东西的任何想法?我已经尝试了几个类似问题的例子,但它们似乎只能用一个整数。从Javascript中的字符串中提取多个整数
任何帮助,将不胜感激,谢谢。
var string = "25a89ss15s9 8 63"; // Input
var list = string.match(/\d+/g); // Get a list of all integers
list.sort(function(x,y){ // Sort list
return x - y;
});
// At this point, you have a sorted list of all integers in a string.
该代码使用RegEx(\d+
手段:所有连续数字=整数,/g
意味着:选择所有实例)。在这种情况下,String.match()
方法返回所有匹配短语的整数。
最后,调用Array.sort
方法,传递一个函数作为参数,对数组进行排序。
您可以使用正则表达式来解析出所有的数字:
/\d+/g
(一个或多个数字和g
意味着“所有出现的”)
然后你就可以对它们进行排序,但要确保您正在使用自定义功能,避免辞书排序(这是默认):
var numbers = "25a89ss15s9 8 63".match(/\d+/g).sort(function(a, b) {return a - b});
你可以提醒这样的:
alert("The numbers are: " + numbers.join(", "));
试试这个:
var s = "25a89ss15s9 8 63";
var xs = s.match(/\d+/g); // => ["25", "89", "15", "9", "8", "63"]
xs.sort(function(x,y) { return x - y; });
xs.join(", "); // => "8, 9, 15, 25, 63, 89"
要与数字的实际阵列结束了,我应该这样做:
var str = "25a89ss15s9 8 63",
arr = str.match(/\d+/g)
.map(Number)
.sort(function(a,b){ return a-b; });
你需要一个兼容性补丁.map()
available from MDN。
请注意,这里假定没有小数点。
+1对于符合ES5标准的环境,不错的补充。 –
这里是线性搜索版本:
var isNumber = false;
var number = "";
var string = "25a89ss15s9 8 63";
var numbers = [];
for (var i = 0; i <= string.length; ++i) {
var c = string.charAt(i);
if (c > '/' && c < ':') {
number += c;
isNumber = true;
} else {
isNumber = false;
}
if (!isNumber) {
if (number != "") {
numbers.push(number);
}
number = "";
}
}
// Non sorted array
alert(numbers);
// Sorted Array
alert(numbers.sort(function(x, y) {
return x - y;
}));
听起来像一个工作,正则表达式 – Trevor
谢谢你们这么多!我很欣赏它,你帮我脱离了束缚! –