String: 字符串
1、定义:多个字符组成的一个*只读*的集合(数组)
2、JavaScript内置对象:ES标准中已经定义好的,由浏览器厂商已经实现的对象
共11个:String Number Boolean
Array Date Math RegExp
Error Function Object Global(全局)
3、包装类型:临时封装原始类型数据,提供对原始类型数据的操作方法
①共3种包装类型:String Number Boolean(不能new)
②何时使用包装类型:自动使用
③为什么使用包装类型?原始类型的数据本来没有任何方法,当程序中使用原始类型调用方法时,程序会自动创建包装类型对象封装该数据,等函数调用完,包装类型自动释放
④例:var n=100; console.log(n.toString(2)); //将n变成2进制数输出 输出:1100100
n=100是一个原始类型的值,一个值怎么会有方法,所以原本是不能使用toString方法的,但是因为有包装类型,程序会自动创建包装类型对象封装该数据,console.log(n.toString(2));变成console.log(new Number(n).toString(2));,此时就是临时的 Number对象调用toString方法了
4、String API
在数组对象中,不改变原对象的API,字符串就能用(concat slice)
比如:.length属性:字符个数;都可用[i]访问每个字符
①转义字符:当字符串的内容和程序的特殊符号冲突时,
或字符串中包含功能字符时,都用\转化字符的意义
常用 \n:换行 \t: 一次缩进Tab键 \":输出 " \\:输出 \
例:输出这句话:我说:"你想的真美"
console.log("我说:"你想的真美""); // Uncaught SyntaxError: missing ) after argument list
console.log("我说:\"你想的真美\""); // 我说:"你想的真美"
②大小写转换:将字符串中所有字符都统一转为大写或小写
何时使用:当不区分大小写时,比如:用户名 验证码(常用) 电子邮件
转大写:str=str.toUpperCase();
转小写:str=str.toLowerCase();
③获取指定位置的字符:3种:
1. str[i] //获取倒数第二个字符 str[str.length-2]
2. str.charAt(i) //返回指定位置的字符,获取第二个字符 str.charAt(2)
3. str.charCodeAt(i)-->获得字符的unicode号
④ 查找关键字的位置:2种:
1. var i=str.indexOf(kword[,starti]);
从左向右,查找kword首字符在字符串中的下标,如果没找到,返回-1
starti:从starti位置开始向后查找下一个,如果省略starti,默认从0开始找
2. var i=str.lastIndexOf(kword[,starti])
从starti位置开始,向左找下一个kword
⑤获取子字符串:3种
1. var subStr=str.slice(starti[,endi+1]) (常用) 与数组slice用法相同,含头不含尾,可用负值
pid.slice(6,-5+1);
2. var subStr=str.substring(starti[,endi+1]) 不支持负数参数
pid.substring(6,pid.length-5+1);
3. var subStr=str.substr(starti,取几个); //pid.substr(6,8)
⑥连接字符串(一般都是用+号直接解决,简单粗暴,很少用API)
concat() 与数组concat用法相同
⑦分隔字符串:var arr=str.split("分隔符"),arr中以数组形式保存每段子字符串
使用场景:今后只要分段处理字符串时,都要先分隔,再遍历
把一个单词变成由字母组成的数组 var chars=str.split("");
把一段文字变成由单词组成的数组 var chars=str.split(" ");
⑧ 模式匹配:按照规则查找或替换字符串中的子内容
查找:2种:
1. 只能从开始位置,找第一个匹配的关键字
var i=str.search(/kword/i); ,用来仅判断有没有关键字时
vs str.indexOf:
search专门用于模式匹配
indexOf不支持模式匹配
2. 获得所有关键字的内容,或个数:
var arr=str.match(/kword/ig)
arr中保存了所有关键字的内容, arr.length表示匹配的关键字的个数
*如果没找到,返回null*,*都要先判断是否为null,再处理!*
*match无法获得关键字的下标位置!*
替换:var newStr=str.replace(模式,"替换内容")