我需要注意什么?
1.因为字符串的replace替换每次只能替换一个,所以如果要对内容中的部分内容进行替换,要用到循环遍历。
例如此题因为只需要对前七位进行替换,所以是i<7(也就是说0-6位),循环七次就够了,如果是对不确定的分散的内容进行替换呢?i<input.length
2.input=input.replace(input[i]," * ") 注意这里是把转换星号后的字符串赋值给原来的字符串,这样就能保证前面的字符串是被修改过的而不是又回到当初!!!不能声明一个新的变量!
3.同时注意上面的input[i]是不需要带引号的,所有被参数化函数花的值都不需要引号。
4.注意一下如果用户输入的内容不符合条件时的情况(方法二)
5.注意字符串转化为数组,数组再转换成字符串的方法(方法三),同时注意使用splice后,不需要定义新的变量,打印原变量已经就是被替换后的数组
方法一:使用遍历循环加replace
![](https://img.haomeiwen.com/i9097045/5b266db4ab6d943f.png)
方法二:注意到用户没有输入指定条件的情况:同时截取前七位后直接用“*******” 进行替换
注意啦!用户输入的内容不正确时,持续的弹出了“请输入手机号码”,这里使用了while,输入正确时则终止了循环break
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
while(input!==null){
var input=prompt("请输入手机号码");
if(isNaN(input)||input.length!=11){
alert("手机号必须是11位纯数字");
}else{
break;
}
}
var m=input.replace(input.slice(0,7),"*******");
document.write(m);
</script>
</body>
</html>
方法三:先把字符串转换为数组(spiit),用数组的剪切后(splice)再换换成字符串(join)
while(iphoneid!==null){
var iphoneid=prompt("请输入手机号码");
if(isNaN(iphoneid)||iphoneid.length!=11){
alert("手机号必须是11位纯数字");
}else{
break;
}
}
var m=iphoneid.split("");
m.splice(0,7,"*******");
var s=m.join("");
document.write(s);
网友评论