我試圖設置我的頁面,以便用戶能夠鍵入像「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
謝謝你們這麼多!我很欣賞它,你幫我脫離了束縛! –