在JavaScript的字符串中夾雜有數字信息,現在需要將數字提取出來。例如字符串"df454er49eg0ew8"需要提取454、49、0、8數字信息,以數組的形式展示出來['454','49','0','8']。請將下文代碼按題意補充完整。(模擬正則表達式)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JavaScript數字提取小作業</title>
</head>
<body>
<script>
var str='0re00e394tj340tu-2-jq-3qo00t66';
var arr=[];
//請補充代碼
</script>
</body>
</html>
若採用正則表達式,可以非常方便快捷實現所需目的。但是不採用正則也可以實現對字符串的處理,主要是解題代碼過程的思路和一些細節知識點的注意。前端小白可以先敲一段代碼,再看參考代碼,以及後續思考的知識點是否能夠解答出來。
參考代碼:
<script>
var str = '0re00e394tj340tu-2-jq-3qo00t66';
var arr = [];
//請補充代碼
var tmp = '';
for (var i = 0; i < str.length; i++) {
if (str.charAt(i) >= '0' && str.charAt(i) <= '9') {
tmp += str.charAt(i);
} else {
if (tmp) {
arr.push(tmp);
tmp = '';
}
}
}
if (tmp) {
arr.push(tmp);
tmp = '';
}
console.log(arr); // => ["0", "00", "394", "340", "2", "3", "00"]
</script>
思考:
1、下圖中方框部分的判斷代碼有什麼作用?
2、方框中爲什麼要用if判斷語句來進行執行代碼塊,去掉if行不行?如果不行會導致什麼情況?
3、1、字符串是遵循什麼樣的比較規則?字符串的大小對比規則,通過str.charAt(i)獲得的是索引位的字符串,可能是數字字符串,也可能是非數字字符串,對於str.charAt(i) >= '0' && str.charAt(i) <= '9'JS是怎樣處理的?
以上問題都寫在註釋中,自己看一下是否考慮正確了吧。