原来如果要遍历一个字符串用的是for循环,通过输出下标的方式遍历每个字符。

但是如果字符是大于0xFFFF的unicode字符,那么就无法正确输出了,所以现在推荐使用新的方法遍历。

for of遍历

用法和for in一样

for (let code of "for"){
  console.log(code);
}

//f
//o
//r

查找方法

原来的字符只有一个indexOf方法用于查找,现在新增三个方法:

startsWith()

它是用于判断字符的头部是否存在对应的字符,并返回布尔值,有两个参数,第一个是要查找的字符,第二个是起步的位置

它这个可以理解为正则的开头匹配吧!

英文字符是以第一个空格隔开往左,包括这个空格,为开头,startsWith就会判断这个开头是否有这个字符,如果指定了位置,就是以指定位置开始,第一个空格来进行判断头部

中文字符就是第一个字,包括后面的一个空格,中文间隙也是一个空格。

var s = "hello you";

s.startsWith("h");  //true
s.startsWith("hello");  //true

var ss = "测试一下";
s.startsWith("测");  //true
s.startsWith("测试");  //false

endsWith()

有开头就有结尾,判断依据是以结尾最后一个字符前面的空格分割开来,中文就是最后一个字和一个空格

var s = "hello you";

s.endsWith("u");  //true
s.endsWith("you");  //true

var ss = "测试一下";
s.endsWith("下");  //true
s.endsWith("一下");  //false

includes()

返回布尔值,是否找到对应的字符

var s = "hello you";

s.includes("u");  //true
s.includes("you");  //true

var ss = "测试一下";
s.includes("下");  //true
s.includes("一下");  //true

第二个参数

第二个参数为起始位置,只有endsWith()第二个参数不是起始位置,而是前几个字符,比如你设置为5,那就表示这个字符串前五个字符。

其他两个都是从哪里开始,到最后结束

模板字符

传统的字符串拼接都是用+加号进行拼接,如果内容一多,就会显得代码冗余和复杂,于是便有了模板字符

console.log(`
这里写字符
这里写字符
可以多行
${变量名}
`)

模板字符支持多行,也可以一行,并且支持变量,用${}包裹变量名,如果`符号需要在字符中使用,使用反斜杠转义即可。

使用了模板字符,所有的空格,缩进,换行,都会在实际渲染中表现出来。

所以,如果按照上面的书写,第一句话之前会有一个换行,解决办法就是使用.trim()方法

取消第一个换行

console.log(`
这里写字符
这里写字符
可以多行
${变量名}
`.trim())

${}

${}里面除了放变量,还可以放入任意的js表达式,可以进行运算,以及引用对象属性,还能运行函数。

如果里面只是字符,渲染后也只是字符,如果里面用的变量,但是变量不存在,则会报错,如果是个对象,则会调用对象的toString方法输出内容。

console.log(`
${1+1}
${fn()}
${x}
${'xxx'}
`.trim())

支持嵌套,我们可以在${}符号里面再嵌套一个模板

标签模板

alert`123`

//等同于
alert(123)

这种模式也可以用于一些自定义的函数形式,具体就不多说了,感觉很复杂,用起来不是很便捷

String.raw

该方法往往都是配合模板字符来使用,他会返回一个反斜线都被转义的字符串,如果反斜杠已经转义了就不处理。

主要是因为\n这种反斜杠变量,所以使用该方法可以进行一个简单的字符转义。

String.raw`Hi\n${2+3}!`

//输出
//"Hi\\n5!"

也可以作为方法使用:String.raw();这样使用的话参数要有两个,而且有点特殊,用法也还没有普及吧,有兴趣自行百度下。

分类: ES6 标签: 字符串

评论

暂无评论数据

暂无评论数据

目录