JavaScript核心语法学习部分(七)
获取指定位置的字符:str.charAt(index);
案例:获取身份证指定位置数字判断性别
1 var input=prompt("请输入 身份证号码:"); 2 var char=input.charAt(input.length-2); 3 console.log(char%2==0?"女":"男");
获取指定位置位置字符的unicode编码:var num=str.charCodeAt(index);
案例1:编码解码
1 var input=prompt("输入消息:"); 2 var result=[]; 3 for (i=0;i<input.length;i++){ 4 result.push(input.charCodeAt(i)); 5 }; 6 document.write(result.join(""));
案例2:编码解码(包含数字的情况)
1 var input=prompt("输入消息:"); 2 var result=[]; 3 for (i=0;i<input.length;i++){ 4 var num=input.charCodeAt(i) 5 if(num<10000){ 6 var arr=[0,0,0,0,0]; 7 var code=num+""; 8 var start=5-code.length; 9 for(var n=0;n<code.length;n++){ 10 arr[start]=code[n]; 11 start++; 12 } 13 num=arr.join("") 14 } 15 result.push(num) 16 }; 17 document.write(result)
字符串三大操作:1查找关键字2替换关键字3获取字符串
查找关键字:str.indexOf("关键字");返回关键字所在位置,如果没找到分给-1
indexOf:懒——只找第一个关键字位置 蠢——默认只能从位置0开始!
var index=str.indexOf("关键字",from);
from:开始查找位置,从from开始向后查找。
案例:使用indexOf查找所有关键字位置!
1 var str='女神说要来,我草草的收拾了下房间,结果她又说不来了,我说:我草!'; 2 var index=-1; 3 while((index=str.indexOf("我草",index+1))!=-1){ 4 console.log("位置"+index+ "发现关键字"); 5 }
①var index=str.lastIndexOf("关键字",from);
from:开始查找的位置,从from向前查找
获取子字符串:var subStr=str.slice(start,end)
②str.substring(start,end+1)用完完全同str.slice
唯一差别:substring不支持负数作为参数。
③str.substr(start,*count*)
以上三个方法省略第二个参数默认都是取到结尾。
案例:获取生日
1 var input=prompt("请输入 身份证号码:"); 2 var char=input.charAt(input.length-2); 3 var birth=input.slice(6,6+8); 4 console.log(birth); 5 console.log(char%2==0?"女":"男");
按照规律分割字符串:str.split("分隔符"[,count])
案例:转换首字母为大写
1 var str="no zuo no die"; 2 var words=str.split(" "); 3 for(var i=0;i<words.length;i++){ 4 words[i]=words[i][0].toUpperCase()+words[i].substring(1); 5 }; 6 str=words.join(" "); 7 document.write(str)
unicode范围:
48-57:0-9数字字符
65-90:A-Z大写字母
97-122:a-z小写字母
19968-40869:汉子
案例:查找字符个数
1 str="选购AppleCare+,延保2年"; 2 var negCount=0; 3 var numCount=0; 4 var chsCount=0; 5 var other=0; 6 for (var i=0;i<str.length;i++){ 7 var num=str.charCodeAt(i); 8 if(num>=19968&&num<=40869){ 9 chsCount++; 10 }else if((num>=65&&num<=90)||(num>=97&&num<=122)){ 11 negCount++; 12 }else if(num>=48&&num<=57){ 13 numCount++ 14 }else{ 15 other++; 16 } 17 } 18 document.write("<br>"+"汉字:"+chsCount+ 19 "<br>"+"字母:"+negCount+ 20 "<br>"+"数字:"+numCount+ 21 "<br>"+"其他字符:"+other);
模式匹配:可以设置查找或替换的规则!
何时使用模式匹配:要查找的关键字可能发生有规律的变化
如何使用模式匹配:1.先定义模式:/关键字/模式 例如:var reg=/no/i i:忽略大小写 g:表示全局查找和替换
String类型中,提供了专门支持模式匹配的API
按照模式替换关键字:str=str.replace(reg,"新值"); reg是定义的规则。reg=/no/ig 默认替换第一个,可以使用g进行全局替换!
案例:查找替换部分字母,不区分大小写
1 var str="No zuo no die"; 2 var reg=/no/ig; 3 str=str.replace(reg,"~~"); 4 console.log(str);
获得所有关键字的内容:var kwords=str.match(reg);只能获得关键字的内容,无法获取关键字的内容。返回的是数组。
kwords.length:找到的关键字个数,如果未找到,返回null;今后只要有可能返回null,就都要先判断不等于null再处理,否则会报错找不到对象!
案例:查找no关键字内容,替换部分字母,不区分大小写
1 var str="No zuo no die"; 2 var reg=/no/ig; 3 var kwords=str.match(reg); 4 console.log(kwords); 5 str=str.replace(reg,"~~"); 6 console.log(str+"<br>"); 7 if(kwords!==null){ 8 document.write("共替换了"+kwords.length+"处"); 9 }