一:字符串的属性
数组是一个容器,字符串也是一个容器 length属性 计算字符串的长度 一个字符为1个位置
var str = '123' console.log(str.length) //长度为3 //也可以通过下标获取对应的字符,下标也是从0开始到length-1结束 console.log(str[0]) //数组是可变的 字符串是不可变的 //数组的length属性是可以修改的,字符串的length只能获取不能修改 str.length = 10 //错误的,无法设置 console.log(str.length) //打印的值还是3 //字符串的增删改查方法,不能操作原本的字符串,只能返回一个新的字符串 var a = 'hello' //不是将hello变成world了,而是将hello先销毁,再用world赋值给a这个变量 a = 'world' var b = 'hello' console.log(b) //字符串不能改,因为他是常量 (常量就是不能修改的量)/只读变量 //不能通过length改变字符串的长度 //不能通过下标赋值来改变字符串 b[1] = 0 //h0llo 不能通过下标赋值来更改字符串 console.log(b) //hello
注意: ECMAScript 中的字符串是不可变的; 也就是说,字符串一旦创建,它们的值就不能改变.
如果要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量.
二:字符串的方法(函数)
字符串是一个容器,所以对应的存在增删改查的方法 但是由于字符串是只读,增删改的方法是不会修改原本的字符串,而是返回一个新的字符串
//通过下标查询对应的字符,相当于字符串的下标获取 var str = 'abc' console.log(str[0]) //获取a
1.charAt() 通过charAt方法来获取,返回的是字符串,根据下标来获取字符串
console.log(str.charAt(0)) //str.charAt(0) 等同于str[0]
2.charCodeAt() 获取ascii码,获取对应下标位置的字符的ascii码
console.log(str.charCodeAt(0)) //97 获取下标为0位置的字符a的ascii码 console.log(str.charCodeAt(1)) //98 获取下标为1位置的字符b的ascii码
3.String.fromCharCode() ASCII编码转换成字符,100的字符为d。该方法是String的静态方法,所以用String调用。 静态方法,利用内置对象,对应的方法,这个方法为内置的静态方法(Math.pow也是静态方法)
//fromCharCode 根据ascii码转换为对应的字符串,ascii码解码为字符串 var codeStr = String.fromCharCode(100) console.log(codeStr) //d
4.indexOf 查找字符串第一次出现的位置, 如果没找到则返回-1
var str = 'abc' console.log(str.indexOf('a')) //0 console.log(str.indexOf('a',1)) //-1 var str1 = 'abca' console.log(str1.indexOf('a')) //0 console.log(str1.indexOf('a',1)) //3
5.lastIndexOf() 查找字符串最后一次出现的位置, 如果没找到则返回-1,从后往前找
console.log(str1.lastIndexOf('a')) //3 console.log(str1.lastIndexOf('a',1)) //0
//查询方法
6.search() 正则匹配 (返回第一次出现的位置),查询方法,返回第一个匹配的位置,返回的为当前找到的下标,如果找不到返回-1
var str = 'cbacbaabcabc' var n = str.search('abc') console.log(n); //返回的值为6 var n = str.search('ddd') console.log(n); //找不到返回-1 //传入为string类型的时候 根据你传入的参数进行对比 返回第一次对比成功的下标 如果没有返回-1 //RegExp 正则对象 一般以俩个 //包起来 var reg = /abc/ //正则对象 console.log(str.search(reg));//返回的为6 // 什么是正则表达式 正则表达式是一个用于匹配的表达式 他可以用来匹配任意的字符串 // RegExp为正则对象 一般的正则表达式以// 包起来 里面书写就是对应匹配的正则表达式 // /abc/ 匹配 abc的正则 //正则表达式的常用内容 // ^表示开头 $符号表示结束 var reg = /^abc$/ var str = 'cbacbaabcabc' console.log(str.search(reg));//查找正则匹配的abc出现第一次出现的位置 -1(必须是a开头c结尾,包一个b在中间) var str = 'abc' console.log(str.search(reg));//返回0 // []表示元素其中一个 {}表示个数 var str = 'abcefg' var rex = /[df]/ //[df]表示df中的其中一个(有d或者有f就可以) console.log(str.search(rex) );//4 var str = "abcdef" var rex = /[ab]{2}/ //表示个数为俩个 可以是a也可以b 匹配的ab aa bb ba console.log(str.search(rex));//0 var str = "abcdef" var rex = /[ac]{2}/ //表示个数为俩个 可以是a也可以是c console.log(str.search(rex));//search搜索的内容必须要连在一起 确保返回的下标是一个 var str = "acbccd" var reg = /[ac]{2}/ //匹配的是aa 或 ac 或 cc 都可以 ca console.log(str.search(reg)); //0 //+ 表示一个或者多个 var str = 'bbaacca' var rex = /[a]+/ //匹配 a aa aaa aaaa.... console.log(str.search(rex)); //2 // 在[]内可以用-表示区间但是必须是正的区间 var rex = /[A-Z]/ //匹配的是A B C D ....Z 26个字母 var rex = /[0-9]/ //匹配的是0 1 2 3 4... 10个数值 var rex = /[a-zA-Z1-9]/ //匹配的就是大写的字母小写字母以及1-9的数字 var rex = /[A-z]/ //正区间 大写字母 小写字母 以ascii码 // \w表示字母数字及下划线 \W相反 除了字母数字及下划线其他都匹配 var rex = /\w/ //匹配字母数字及下划线 var str = '_123456A' console.log(str.search(rex)); //0 // \s 空白字符 \S 非空白字符
注: g表示进行全局匹配,i表示匹配的时候忽略大小写
7.replace() 替换字符串。替换匹配的值,变成另外一个值,返回一个新的字符串
var str = 'ababababa' var newStr = str.replace('a','c') //将a替换为c 这里只能运行一次 他只会找到第一个a 将a替换为c //replace只会找到第一个匹配的 将他替换为指定的字符串 console.log(newStr); //cbabababa //这里的替换只能执行一次,不能够进行全局匹配,如果需要全局匹配,则应使用正则表达式: //将所有的a替换为c // 循环遍历 indexOf 找到第一个下标 如果没有找到就返回-1 for(var i=0;i<str.length;i++){ if(str.indexOf('a')!=-1){//里面有a str = str.replace('a','c') //进行替换将替换的完的数据设置给对应的字符串 }else{//里面没有a 就退出 break } } console.log(str); //replace也同样支持正则 //参数1为对应的搜索条件(支持string 或者 正则) 参数2为替换的内容 //replace 在 search 的基础上做替换
8.substring(start,end) 截取方法 返回新的字符串。截取字符串 范围是[start, end)。 注: 如果只有一个参数, 则表示到字符串最后
var str = 'abcdefg' var newStr = str.substring(1,3) //开始位置下标 截取到结束位置下标 不包含结束位置 console.log(newStr); //bc
9.split(separator, howmany) 根据分隔符、拆分成数组。分割方法,分割为数组,数组的join连接成字符串 注:如果空字符串(“”)用作separator, 那么stringObject中的每个字符之间都会被分割
separator(字符串或正则表达式) howmany(可以指定返回的数组的最大长度, 可以省略)
var str = 'a,b,cd,e' //可以根据正则截取 返回值为string类型数组 var strArr = str.split(',') //根据,来进行分割 console.log(strArr); var strArr = str.split(',',2) //limit表示数量 //不写表示所有的全部填入数组 写上去就是填入指定个数的元素到数组(从前往后填入) console.log(strArr);
10.str.toLowerCase(); 把字符串转换成小写 str.toUpperCase(); 把字符串转换成大写
//转大写 转小写 全部转换 var str = 'ABccddEF' var str1 = str.toLowerCase() console.log(str1); //转小写 var str2 = str.toUpperCase() console.log(str2); //转大写