WEB前端第二十五课——js字符串
1.字符串嵌套
字符串可以嵌套使用
在单引号包裹的字符串内部,应该使用双引号进行嵌套
在双引号包裹的字符串内部,应该使用单引号进行嵌套
在 json解析的时候字符串需要单引号,因此推荐在各种情况都使用单引号的方式进行声明
2.转义字符,用特殊的符号来替代在字符串中,容易引起歧义的内容
\' 表示单引号
\" 表示双引号
一个字符串一般写在一行内,不要分成多行
如果必须分成多行,可以采用反斜杠 “\” 作为连接符,或者将其分成多个字符串,通过拼接的方式进行组合
3.字符串长度
① 测量字符串长度:length属性,
语法格式:字符串变量 . length
② 字符索引:[]方法,
在字符串后面接中括号,中括号内写数字,能够访问字符串中每一个字符
代码示例:
var name=Franklin;
var firstname=name[0];
一次只能索引一个字符,如需索引多个,则使用加号(+)连接符多次索引
索引从0开始,0表示第一个字符
③ 获取指定位置字符:charAt()方法和 charCodeAt()方法,
两种方法均是获取指定位置字符,不同的是charAt()返回的是具体的字符,而charCodeAt()返回的是字符对应的Unicode编码
代码示例;
var name=Franklin;
var cat=name.charAt(0);
var ccat=name.charCodeAt(0);
var cat结果为“F”,而var ccat结果为“70”
两个重要的字符编码,A——65,a——97,其他字母累加即可
如果index是负数,或者大于等于字符串长度的值,则 charCodeAt()返回的值为 NaN。
④ 字符串连接:concat()方法,
将两个或多个字符串拼接起来,组成一个新的字符串,用法与加号(+)有相同之处
语法格式:var str=str1.concat(str2,str3,……);
4.转义字符
反斜杠 “\” 被称作转义字符
转义字符可以将特殊字符转换为字符串字符,可以用于转义撇号、换行、引号等特殊字符
常见转义符号:\' (单引号)、\" (双引号)、\\ (反斜杠)、\n (换行)、\r (回车)、\t (制表符)、\b (退格)、\f (换页符)
\n、\r、<br/>区别
\n,英文是 new line,表示使光标下移一格
\r,英文是carriage return,表示使光标移到行首
<br/>是浏览器换行
总结:\n \r表示源代码换行(浏览器不解释),<br/>表示浏览器文字换行
5.字符串对象
JavaScript中提供了另外一种字符串的声明方式,叫作字符串对象,使用 new关键字将字符串定义为一个对象
语法示例:var newString=new String('Franklin');
var str1='frank’; //(typeof str1)返回值为 String
var str2=new String('frank’); //(typeof str2)返回值为Object,String首字母必须大写
通常不要创建 string对象,它会拖慢程序执行速度,并可能产生其他副作用
字符串和字符串对象虽然效果相似,但它们是完全不同类型的数据
6. 字符串属性及方法
substring,截取字符串
substr,截取字符串(长度)
slice,截取字符串
indexOf,返回当前查找字符串的位置,如果没有返回-1
lastindexOf,倒过来查找
trim,去掉字符串两端的空格
toUpperCase和toLowerCase,大小写转换
localeCompare,比较两个字符串大小
match,返回一个指定字符串的数组
search,返回位置
replace,替换字符串
split,字符串切割,返回数组
7.substring截取字符串
通过指定开始和结束位置,对字符串变量进行截取
语法:str . substring(index1, index2);
第一个参数表示截取的开始位置(包含index1),第二个参数表示结束位置(不包含index2)
结束位置理论上应该大于开始位置,如果第一个参数值大于第二个参数值,substring方法会自动调换两个参数的位置
8.substr截取字符串
通过指定开始截取的位置和截取的长度,对字符串变量进行截取
语法:str . substr(num1, num2);
substr方法的语法格式与substring方法很相似,但表达含义和用法差别很大,substr两个参数不能互换
9.slice截取字符串
通过指定开始和结束位置,对字符串变量进行截取
语法:str . slice(num1,num2);
slice的两个参数不能互相调换位置,如果第一个参数大于第二个参数,则返回结果为一个空字符串
substring、substr、slice三个方法的第一个参数都表示截取开始的位置,如果省略第二个参数,那么这三种方法都表示从开始位置截取一直到字符串本身结束
10.indexOf
查找一个字符或字符串在另一个字符串中的位置
语法:str . indexOf('sub’);
字符串的查找是从源字符串开始处进行向后查找,且只针对首次出现的位置查找,返回值为所在位置的索引,如果查找失败则返回 -1
11.lastindexOf
查找一个字符或字符串在另一个字符串中的位置
语法:str . lastindexOf('subStr’);
字符串的查找是从原字符串的末尾处进行向前查找,如果查找失败则返回 -1
12.indexOf和 lastindexOf还可以接受第二个参数,用于表示开始查找的位置
对于indexOf而言,表示从这个位置开始向后查找,语法:str. indexOf('subStr', num);
对于lastindexOf而言,表示从这个位置开始向前查找,语法:str.lastindexOf('subStr', num);
13.replace
将查找到的首次出现的字符串替换成目标字符串,如果查找失败则不发生替换,而是将原字符串完整拷贝出来
语法:str . replace('oldStr','newStr');
replace方法并不会对原本字符串产生任何影响,而是生成一个新的字符串
replace方法只能替换首次出现的字符串,如果要替换多个, 需要依赖于正则表达式
14.trim
去掉字符串两端多余的空格,中间部位的空格不受影响,语法:str . trim();
trim()方法并不会对原本的字符串产生任何影响,而是生成一个新的字符串
15.toUpperCase
将字符串中的英文字母全部转换成大写字母
语法:str .toUpperCase();
16.同LowerCase
将字符串中的英文字母全部转换成小写字母
语法:str .toLowerCase();
17.localeCompare
根据本地的排序规则对两个字符串进行大小比较
语法:str1 .localCompare(str2);
如果计算结果大于0则表示 str1大于 str2,如果计算结果等于0则表示 str1等于 str2,如果计算结果小于0则表示 str1小于 str2
ECMAscript标准没有规定如何进行本地特定的比较操作,只规定了该函数采用底层操作系统提供的排序规则,自定义比较方法也是可以的
18.match
查找原字符串是否匹配某个子字符串,返回结果是匹配的子字符串信息数组,如果没有找到则返回null
返回的数组内容包含:寻找的子字符串、子字符串位置索引、原字符串
语法:str . match('substr');
示例:var string= 'hello world!';
string.match('hello'); //结果:['hello', index:0, input:'hello world!']
match方法只能查找到匹配的第一个字符串,但通过正则表达式的方式可以查找到所有匹配的字符串
19.search
与match方法相似,都是查找子字符串在指定字符串的位置信息
不同的是search方法返回的结果为下标(索引),如果没有找到匹配字符串则返回 -1
语法:str . search('substr');
示例:var string= 'hello world!';
string.search('hello'); //结果:0
20.split
根据指定的符号将字符串进行分割,分割后的所有子字符串整合成为一个数组返回
如果无法分割,则只返回一个元素——字符串本身
语法:str . split('symbol');
示例:var string = 'see you soon!’
string . split(' '); //返回结果:['see’,'you’,'soon’]
分隔符号不同,返回的数组就可能不同
21.JavaScript字符集
js使用的是Unicode字符集,在JavaScript引擎内部,所有字符都用Unicode表示
js不仅以Unicode存储字符,还允许在程序中直接使用Unicode编码表示字符
解析代码时,js会自动识别一个字符是字面形式表示,还是Unicode形式表示,输出给用的时候,所有字符都会转成字面形式
示例,var eg = '\u00A9';
console.log(eg); //©
\n(换行符),\u000A
\'(单引号),\u0027
\"(双引号),\u0022
\\(反斜杠),\u005C
22.字符串Base64编码
Base64本身是一种加密方式,可以将任意字符转换成可打印字符,通常主要是为了简化程序处理,不出现特殊字符,使用这种编码方法
JavaScript中为字符串提供了两种有关Base64编码的方法:
btoa() 字符串或二进制值转换为Base64编码(加密)
atob() Base64编码转换为原来的编码(解密)
示例:
var string = 'frank';
console.log(btoa(string)); //ZnJhbms=
var string = 'ZnJhbms=';
console.log(atob(string)); //frank
这两种方法不适合非ASCII码的字符,但可以通过中间插入一个转码环节的方式,使用这两种方法将非ASCII码字符与Base64进行转换
这两种方法限于解析非中文代码,解析中文(包括英文)的方法为:encodeURIComponent() (加密)、decodeURIcomponent() (解密)
可以通过将中文加密后,再进行Base64加密,解密时操作顺序相反