在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是怎样处理的?
以上问题都写在注释中,自己看一下是否考虑正确了吧。