字符串是基本类型:
var str = "hello word";
var str1 = str;
str = "liqi";
console.log(str1); //hello word ,在此时str1和str的值是一样的,但没有任何联系
console.log(str); // liqi 改变str的值,对str1不影响。
字符串的存在形式:
- 字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。
'abc'
"abc"
- 单引号字符串的内部,可以使用双引号。双引号字符串的内部,可以使用单引号。
- 如果要在单引号字符串的内部,使用单引号(或者在双引号字符串的内部,使用双引号),就必须在内部的单引号(或者双引号)前面加上反斜杠,用来转义。
- 字符串默认只能写在一行内,分成多行将会报错。
- 如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠。
注意,反斜杠的后面必须是换行符,而不能有其他字符(比如空格),否则会报错。 - 连接运算符(
+
)可以连接多个单行字符串,用来模拟多行字符串。 - 利用一种多行注释生成多行字符串的变通方法。
(function(){/*
line 1
line 2
line 3
*/ }).toString().split('\n').slice(1,-1).join('\n')
//"line 1 line 2 line 3"
- 反斜杠在字符串内有特殊含义,用来表示一些特殊字符,所以又称为
转义符
。 - 如果字符串的正常内容之中,需要包含反斜杠,则反斜杠前需要再加一个反斜杠,用来对自身转义。
var str1 = 'li"hao"'; //单引号中可以包含双引号
var str2 = "lili'hao'ni"; // 双引号中可以包含单引号
var str3 = 'hello \'niao\''; //单引号中引用单引号,必须使用\转义符号
var str4 = "hrllo\" str5\""; //双引号中使用双引号,必须使用\转移符号
var str5 = "hello\n word"; //\n代表换行,是一个字符
var str6 = "hrllo\\n li"; //\n失去原有的含义,变成普通字符,所以控制台展示:hrllo\n li
var str7 = "htllo\twoef" //\t是tab键,表示一个空格
/*var str8 = "a
var" *///字符串换行会报错,相当于每一行是一条语句,而第一行的语句少一个""引号,会报错,下面的语句都不会执行。
var str9 = "long \
long \
lonl"// s使用\可以实现字符串的换行,控制台展示:long long lonl
//注意点:\后面千万不要写空格,尽量不要使用这种写法
var str10 = "liqi"
+ "liqi"
+ "liq" //+可以把小字符串拼接成长字符串。控制台展示:liqiliqiliq
var str11 = "liqi\\liqi"//想使用\,必须在\前面再加一个\,使前面\转义,展示:"liqi\liqi"
var fn = function(){/*
<head>
<meta charset="UTF-8">
<title>作用域链</title>
</head>
*/}
console.log(fn.toString())
//控制台展示:
//function(){/*
// <head>
// <meta charset="UTF-8">
// <title>作用域链</title>
// </head>
// */}
/*缺点:在代码优化的过程中,源码会做一些压缩合并,但是有些工具
会自动的把注释省略掉,达不到想要的效果。*/
TIM图片20190118133123.png
常见的字符串的操作
字符串操作不会修改原来的字符串
- 字符串的连接
+
var str1 = "hello";
var str2 = "word";
console.log(str1 + ' ' + str2);//+' '+的含义是使两个字符串中间存在空格
TIM图片20190118133616.png
- 字符串访问:类似数组的访问方式str[0]....str[str.lenght-1];
var str1 = "hELlo";
var str2 = "word";
console.log(str1 + ' ' + str2);//+''+的含义是使两个字符串中间存在空格
console.log(str1.length); // 5
console.log(str1[0]); //h
console.log(str1[100]); //获取的长度超过字符串的长度,不会报错,返回undefined
console.log(str1[str1.length-1]);//o获取str1的最后一个字符
console.log(str1.charAt(0));//获取str1的第一个字符h
console.log(str1.charCodeAt(0));//获取第一个字符的ASCII码 104
TIM图片20190118134424.png
- 字符串的截取:
subStr
法和subString
和slice
法
截取操作返回的是新字符串,原字符串没有改变
var str3 = "liqi nihaome";
var s1 = str3.subStr(1,4);//1是起始位置,4是结束位置,长度是4,liqi
var s2 = str3.subString(1,4);//1是起始位置,4是结束位置,长度是4-1=3。liq
var s3 = str3.slice(1,3);//同上,但是允许负参。
console.log(str3); //原字符串保持不变
- 字符串的查找
search
,替换replace
,匹配字符串match
var str = "hello my world";
var s1 = str.search('my'); //6 找不到为-1
var s2 = str.replace('my', 'your'); //
var s3 = str.match('my'); //返回匹配的数组
- 字符串的大小
var str = "Hello";
str.toUpperCase();//把一个字符串变成大写
str.toLowerCase();//把一个字符串变成小写
TIM图片20190118135638.png
- split():把字符串做一个切割变成数组:
-
以空字符串做切割
TIM图片20190118140029.png -
以l做切割
TIM图片20190118140115.png
作用:
- 判断字符串是否是一个回文
abcdedcba
var str = "abcdefg"
str.split('');//得到一个数组
str.split('').reverse();//将数组倒过来
str.split('').reverse().join('');//以空字符做连接生成新的字符串
判断:
str = str.split('').reverse().join('');//判断是否是回文
- 对字符串进行倒叙。
var str = "abcdefg"
str.split('');//得到一个数组
str.split('').reverse();//将数组倒过来
str.split('').reverse().join('');//以空字符做连接生成新的字符串
网友评论