课程大纲
- 字符串概述
- 字符串长度
- 转义字符
- 字符串对象
- 字符串方法
字符串概述
定义:字符串就是用单引号或者双引号包裹起来的,零个或多个排列在一起的字符。
嵌套:字符串可以嵌套。
在单引号包括的字符串内部,应该使用双引号进行嵌套
在双引号包裹的字符串内部,应该使用单引号进行嵌套
在json解析的时候字符串需要使用单引号,因此推荐在各种情况都使用单引号的方式来声明。
转义字符:用特殊的符号来替代在字符串当中,容易引起歧义的内容
’ 单引号 " 双引号
字符串需要在一行内定义,分成多行会报错。但是如果必须分成多行,则在每一行的末尾使用反斜杠\作为连接符。
也可以使用[(+)连接运算符]来连接多个字符串,模拟多行字符串。
javascript字符串提供了一系列的方法,来帮助我们更好的使用字符串
- 测量字符串长度:length属性
- 字符索引:[]方法
索引一次只能索引一个字符,如果需要多个则需要用+连接符。
索引从0开始,0表示第一个字符。
- 获取指定位置字符:charAt()方法和charCodeAt()方法
charAt返回的是具体的字符
charCodeAt()返回的是字符对应的Unicode编码
字符编码需要记得两个。A-65,a-97。其他符号累加即可。
如果index是负数,或大于等于字符串的长度,则charCodeAt()返回NaN。
- 字符串连接:concat()方法
concat()方法能够将两个字符串拼接起来,合成一个新的字符串。
可以认为concat和+作用相同。至少在现阶段我们可以认为他们是没有区别的。
转义字符
定义:反斜杠被叫做转义字符。
字符 | 解释 |
---|---|
’ | 单引号 |
" | 双引号 |
\ \ | 反斜杠 |
\n | 换行 |
\r | 回车 |
\t tab | 制表符 |
\b | 退格符 |
\f | 换页符 |
\n \r
区别
\n是换行,表示使光标下移一格。
\r是回车,表示使光标到行首
是浏览器换行
总结:\r\n表示源代码换行。
表示浏览器文字换行。
字符串对象
javascript中有字符串类型string类型,还提供了另外一种字符串的声明方式,这种方式叫字符串对象。使用new关键字将字符串定义为一个对象。
var newString = new String("Hello World");
不要创建String对象。它会拖慢执行速度,并可能产生其他副作用;
字符串和字符串对象是两个完全不同类型的数据,虽然效果相似,但是不能混为一谈!
字符串属性及方法
属性 | 解释 |
---|---|
length | 返回字符串长度 |
charAt(number) | 返回当前指定位置的字符 |
charCodeAt() | 返回字符对应的Unicode编码 |
concat() | 连接字符串 |
substring | 截取字符串 |
substr | 截取字符串 |
slice | 截取字符串 |
indexOf | 返回当前查找字符串的位置,如果没有返回-1 |
lastIndexOf | 倒过来查找 |
trim | 去掉字符串两端的空格 |
toUpperCase和toLowerCase | 大小写转换 |
localeCompare | 比较两个字符串的大小 |
match | 返回一个指定字符串的数组 |
search | 返回位置 |
replace | 替换字符串 |
split | 字符串切割,返回数组 |
substring:截取字符串
str.substring(num1,num2);
作用:从num1位置开始截取,截止到num2位置结束之间的字符串。
第一个参数表示子字符串的开始位置,第二个参数表示结束位置。
结束位置理论上应该大于开始位置。
如果出现第一个参数大于第二个参数的情况,substring方法会自动更换两个参数的位置。
substr:截取字符串
str.substr(num1,num2);
作用:从num1位置开始截取,num2表示要截取的字符串长度。
substr方法虽然写法和substring很相似,但是表达的含义以及用法却并不一样。
substr方法两个参数不能够互换。
slice:截取字符串
str.slice(num1,num2);
作用是从num1位置开始截取,num2表示截取结束的位置。
slice作用也是截取字符串,但是slice的两个参数不能互换。
如果开始位置大于结束位置,那么返回结果就是一个空字符串。
substring、substr、slice三个方法第一个参数都表示字符串截取的开始位置。如果省略第二个参数,那么这三个方法都表示获取字符串本身一直到结束。
indexOf:查找一个字符串在另一个字符串的位置
str.indexOf('substr');
字符串查找是从原字符串的开始处进行查找。如果查找失败则返回-1。
lastIndexOf:查找一个字符串在另一个字符串的位置
str.lastIndexOf('substr');
字符串的查找是从原字符串末尾处向前进行查找。如果查找失败则返回-1。
只是查找顺序从末尾向前,并不是把字符串也反过来查找!!!
indexOf和lastIndexOf还能接受第二个参数。表示从这个位置开始向后/前匹配
replace方法
replace方法能够将[查找到的第一个指定字符串]替换成[目标字符串]。如果查找失败则不发生替换,而是将原字符串复制一份拷贝。
str.replace(oldString,newString);
replace方法并不会对原本字符串产生任何影响,而是会生成一个新的字符串。
replace只能改变第一个查找到的子字符串,如果想要改变多个,仍然需要依赖于正则表达式。
trim方法
trim()方法的作用是能够去掉字符串两端多余的空格。
str.trim();
trim方法并不会对原本字符串产生任何影响,而是会生成一个新的字符串。
toUpperCase方法
toUpperCase方法能够把字符串中的英文字母全都转换成大写字母。
str.toUpperCase();
toLowerCase方法
toLowerCase方法能够把字符串中的英文字母全都转换成小写字母。
str.toLowerCase();
localeCompare方法
localeCompare方法的作用是根据本地的排序规则来进行比较。
str1.localeCompare(str2);
如果计算结果大于0则表示str1大于str2。
如果计算结果等于0则表示str1等于str2。
如果计算结果小于0则表示str1小于str2。
ECMAscript标准并没有规定如何进行本地特定的比较操作,它只规定该函数采用底层操作系统提供的排序规则。如果想要自定义比较方法也是可以的。
match方法
match方法的作用是查找原字符串是否匹配某个子字符串,返回结果是匹配的子字符串数组,如果没有找到则返回null。返回的数组内容为:寻找的子字符串,子字符串位置和原字符串。
str.match(substr);
match方法只能匹配到寻找到的第一个字符串。
match方法还有另外一种正则表达式的写法,就是将substr字符串用正则表达式写。正则表达式的写法中能够找到所有匹配的字符串。
search方法
search方法和match相似,都是查找子字符串在指定字符串中的位置。不同的时返回结果为下标。如果没有找到匹配子串,则返回-1。
str.search(substr);
javascript字符集
JavaScript使用Unicode字符集。也就是说,在Js引擎内部,所有字符都用Unicode表示。
字符串Base64编码
Base64本身是一种加密方式,可以将任意字符转成可打印字符。而我们使用这种编码方法,主要不是为了加密,而是为了不出现特殊字符,简化程序的处理。
解析非中文代码
btoa():字符串或二进制值转为Base64编码
atob():Base64编码转为原来的编码
加密解密中文文字
encodeURIComponent():加密
decodeURIComponent():解密