1.常用转义字符
\n 换行
\0 空字符
" 双引号
’ 单引号
\ 反斜杠
let str =`\n12\"34\'56\r78\0 \\`
console.log(str); //
//12"34'5678 \
2.字符串书写格式
1
let str="123"+
"345"+
"567"
console.log(str); //123345567
2
let str2="\
123\
345\
567"
console.log(str2); // 123 345 567
3
let str3=`
123
345
${str2}
`
console.log(str3);
/*
123
345
123 345 567
*/
总结一下
+字符串没有格式,
\字符串只保留空格
``字符串可以保留格式,甚至可以写变量 (推荐用)
3 .字符串方法
查找搜索
1查找字符串 indexOf lastIndexOf search
1indexO()f 和lastIndexOf()
相同:都有两个参数,第一个是要查搜索的字符串,第二个是开始的位置
没找到都返回-1,找到了都返回下标
区别:indexOf 从前往后 lastIndexOf从后往前
let str="stSTrinTg"
console.log(str.indexOf("i",2)) //5 从下标2开始往后找,找到下标5字符串为i,返回5
console.log(str.lastIndexOf("i",2)) //-1 从下标2开始往前找,找不到i 返回-1
search()与indexOf
区别 search没有第二个参数,search可以用正则表达式搜索
let str="stSTrinTg"
console.time("search")
str.search("T")
console.timeEnd("search")
console.time("indexOf")
str.indexOf("T")
console.timeEnd("indexOf")
//search: 0.02392578125 ms
//indexOf:0.005126953125 ms
从search支持正则和速度差一些可以看出来,字符串参数可能被转换成了正则来搜索,所以简单的搜索用indexOf更快
分割
let str="stSTrinTg"
1.slice(start, end)
返回start到end之间的字符串
console.log(str.slice(2,5));
// 返回下标2到4的字符串 STr
负数参数从后往前算
console.log(str.slice(-2));
// 从后往前数2位字符串 Tg
console.log(str.slice(2));
// 返回下标2到最后的字符串 STrinTg
2.substr(start, length)
第二个参数为分割长度。
从start开始分割length个字符,如果length为负数则不返回值
其他与slice一致
3.substring(start, end)
无法接受负的索引。其他与slice一致
总结下都是左闭右开
4.split() 把一个字符串按照分隔符分割成数组
2个参数,第一个参数是正则或字符串,指定分割的地方,第二个参数为分割后返回多少值,默认全返回
let splitstr="a b c d e"
console.log(splitstr.split(" ")); //['a', 'b', 'c', 'd', 'e']
console.log(splitstr.split(" ",3)); // ['a', 'b', 'c']
5.replace() 方法用另一个值替换在字符串中指定的值
两个参数,第一个要替换前的值,第二个替换后的值
let str="stSTrinTg"
console.log(str.replace("T","|")); //stS|rinTg
如果要大小写敏感,全局匹配
用正则表达式
console.log(str.replace(/T/ig,"|")); //s|S|rin|g
其他方法
toUpperCase()转换字符串为大写
toLowerCase()转换字符串为小写
concat() 连接字符串,和+效果一致
trim() 清理字符串前后空白
charAt(index) 返回字符串中指定下标的字符串:
4.字符串是不是个对象
let str="str"
let strobj=new String("obj")
console.log(str instanceof Object); //string
console.log(typeof(strobj)); //object
然而这两个都能执行方法
console.log(str);
console.log(strobj);
通过输出str 和strobj可以看出,理论上来说str不可能能够执行方法,毕竟方法都在字符串对象身上,str只是字面量
所以可以得出一个结论
JavaScript 有特殊的处理临时将基本字符串转化为字符串对象并且调用相应的方法和返回结果
所以字符串对象和字符串是两个东西。