5.字符串操作
包装对象:目的是让原始类型数据向引用类型数据类型一样,具有属性和方法
JS中提供了三种包装对象:String、Number、Boolean
将任意类型转为字符串:
new String(数据) 强制转为字符串,返回 对象,使用和字符没有区别
String(数据) 强制转为字符串,返回 字符串
PS:包装对象和普通的字符串用法没有区别
(1)转义字符
\ 转换字符的意义 在要转义的字符前面加
\' | 将有特殊意义的引号转换成 普通字符 |
\n | 将普通字符n,转义成 换行符 |
\t | 将普通字符t转义成 制表符(tab键效果) |
\'' | 双引号 |
\b | 退格符 |
\\ | 反斜杠 |
(2)字符串API
API 作用——参数——返回值
length() | 获取字符串长度 |
charAt() | 获取下标对应的字符 字符串[下标] |
charCodeAt() | 获取某个字符的Unicode码 |
indexOf(value,start) | 查看某个字符的下标,value要查找的字符串,start开始查找的下标,找不到返回-1 |
lastIndexOf(value) | 查看某个字符最后一次出现的下标,找不到返回-1 |
toUpperCase() | 将英文字母转为大写 |
toLowerCase() | 将英文字母转为小写 |
slice(start,end) | 截取字符串,start开始的下标,end结束的下标,不包含end本身;如果end为空截取到最后 |
substr(start,count) | 截取字符串,start开始的下标,count截取的长度,如果count为空截取到最后 |
substring(start,end) | 截取字符串,start开始下标,end结束下标,end为空截取到最后;如果下标为负数,自动转成0 |
split() | 按照指定的字符将字符串分割为数组 |
对比slice和substring
slice中下标允许使用负数,substring会自动将负数转为0;
slice中下标的顺序start小于end,substring中下标大小不分顺序
//字符串API var str='javascript'; //遍历字符串,打印出每一个字符 for(var i=0;i<str.length;i++){ console.log(str.charAt(i)); } //声明变量保存字符串,检测该字符串中是否含有@,如果有打印“合法的邮箱”,否者打印“不合法的邮箱” var email='wangwu@163.com'; if(email.indexOf('@')>=0){ console.log('合法的邮箱'); }else{ console.log('不合法的邮箱'); } //声明变量保存4个英文字母,循环弹出提示框,输入验证码(不区分大小写),如果输入正确,结束循环 var code='aBcd'; //var input=''; //while(input.toUpperCase()!=code.toUpperCase()){ // input=prompt('请输入4位字母的验证码'); //} while(true){ var input=prompt('请输入4位字母的验证码'); if(input.toUpperCase()==code.toUpperCase()){ alert('输入的\n'+input+'\n是正确的验证码'); break; } } | //截取字符串scr var str='JavaScript'; console.log(str.slice(4)); console.log(str.slice(4,7)); console.log(str.slice(-3,-1)); console.log(str.substr(4,3)); */ //使用变量保存邮箱,截取用户名和域名 var email='tom123456@163.com'; var index1=email.indexOf('@'); var user=email.substr(0,index1); var ip=email.substr(index1+1); console.log('用户名是:'+user+'\n域名是:'+ip); //将一个英文单词的首字母转大写,其它转小写 var word='welcoME'; var str1=word.substr(0,1); var str2=word.substr(1); console.log(str1.toUpperCase()+str2.toLowerCase()); // 练习:使用变量保存身份证号,截取其中的出生年,月,日,性别。 打印 1998年06月20日 性别男 var card=' 500121199806200336'; var year=card.substr(6,4); var month=card.substr(10,2); var day=card.substr(12,2); var sex=card.substr(-2,1)%2==1?'男':'女'; console.log(year+'年'+month+'月'+day+'日'+'\n性别'+sex); //使用split获取邮箱中的用户名和域名(jerry@126.com) var email='jerry@126.com'; //console.log(email.split('@')); var arr=email.split('@'); console.log(arr[0],arr[1]); |
(3)匹配模式(掌握)
作用:用于查找、替换字符串
match(value) | 用于查找匹配的字符串,返回所有满足条件的元素,组成数组 /china/ig i -->ignore 忽略大小写 g --> global 全局查找 |
search(value) | 用于查找满足条件的第一个字符串的下标,如果找不到返回-1 |
replace(vaele1,value2) | 查找并替换vlaue1要查找的字符串,value2要替换的字符串 |
var str='China is biggest country,china\'s internet is good,CHINA have much money,welcome to china'; //修饰符 i -->ignore 忽略大小写 console.log(str.match(/china/ig)); //console.log(str.search(/china/i)); console.log(str.replace(/china/ig,'***')); |
6.Math对象
Math对象不需要使用new创建可以直接使用
PI | 获取圆周率 | console.log(Math.PI); // 3.141592653589793 |
abs() | 获取绝对值 | console.log(Math.abs(3-5)); //2 |
floor() | 向下取整 | console.log(Math.floor(3.4)); //3 |
ceil() | 向上取整 | console.log(Math.ceil(3.4)); //4 |
round() | 四舍五入取整 | console.log(Math.round(3.4)); //3 |
max() | 取一组数字的最大值 | console.log(Math.max(3,4,6)); //6 |
min() | 取一组数字的最小值 | console.log(Math.min(3,6,2)); //2 |
pow(x,y) | 求x的y次幂 | console.log(Math.pow(2,5)); //32 |
random() | 取随机数 0~1 0<=r<1 | console.log(Math.random()); //0~1 |