String
String是对应字符串的引用类型
1. JavaScript 字符
| api | 说明 | 
| String.length | 字符串长度 | 
| String.charAt | 返回给定索引位置的16位码元,参数传整数 | 
| String.charCodeAt | 返回给定索引的字符编码 | 
| String.fromCharCode | 接受多个字符编码拼接成字符串(以上方法均基于16位码元完成,超过16位码元需要用增补平面,每个字符使用两个16位码元被称为代理对) | 
| String.codePointAt | 指定码元位置识别完整的码点(用来识别既含单码元又包含代理对的) | 
| String.fromCodePoint | 接受多个码点拼接成字符串 | 
2. 字符串操作方法
| api | 说明 | 
| String.concat | 连接字符串,不推荐,推荐使用 + | 
| String.slice | 截取字符串,非破坏,第一个参数表示字符串开始,第二个参数表示字符串结束(包含),省略第二个参数代表提取到字符串结束。 | 
| String.substr | 截取字符串,非破坏,第一个参数表示字符串开始,第二个参数表示字符串结束(包含),省略第二个参数代表提取到字符串结束。 | 
| String.substring | 截取字符串,非破坏,第一个参数表示字符串开始,第二个参数表示返回字符串的数量, 省略第二个参数代表提取到字符串结束 | 
3. 字符串位置方法
| api | 说明 | 
| String.indexOf | 正向查找传入的字符串,并返回位置。 第二个参数开始搜索的位置。 | 
| String.lastIndexOf | 正向查找传入的字符串,并返回位置。第二个参数开始搜索的位置。 | 
// 查找字符串中所有“e”并拼成数组
let stringValue = "Lorem ipsum dolor sit amet consectetur adipisicing elit";
let position = new Array();
let pos = stringValue.indexOf("e");
while (pos > 1) {
  position.push(pos);
  pos = stringValue.indexOf("e", pos + 1);
}
console.log(position); // [3, 24, 32, 35, 52]
4. 字符串包含方法
| api | 说明 | 
| String.startsWith | 从字符串中搜索传入的字符串,返回布尔值。搜索字符串开头。第二个参数表示开始搜索的位置 | 
| String.endsWith | 从字符串中搜索传入的字符串,返回布尔值。搜索字符串末尾 | 
| String.includes | 从字符串中搜索传入的字符串,返回布尔值。搜索整个字符串。第二个参数表示开始搜索的位置 | 
5. trim() 方法
| api | 说明 | 
| String.trim | 创建字符串副本,删除前后空格符并返回结果。 | 
| String.trimLeft | 字符串开始清理空格符 | 
| String.trimRight | 字符串末尾清理空格符 | 
6. repeat() 方法
| api | 说明 | 
| String.repeat | 复制字符串,整数参数代表复制多少次,并返回拼接后的结果 | 
7. padStart() 和 padEnd() 方法
| api | 说明 | 
| String.padStart | 小于指定长度,在字符串开始填充字符串。第一个参数为填充的长度,第二个参数为填充的内容。 | 
| String.padEnd | 小于指定长度,在字符串末尾填充字符串。第一个参数为填充的长度,第二个参数为填充的内容。 | 
8. 字符串的迭代余结构
// 手动使用迭代器
let message = "abc";
let strIterator = message[Symbol.iterator]();
console.log(strIterator.next()); // {value:"a",done:false}
console.log(strIterator.next()); // {value:"b",done:false}
console.log(strIterator.next()); // {value:"c",done:false}
console.log(strIterator.next()); // {value:undefiend,done:true}
// 使用for of 迭代
for (const i of "abcde") {
  console.log(i); // 依次打印 a,b,c,d,e
}
// 字符春解构分割成数组
let message = "abcde";
console.log([...message]); // ["a", "b", "c", "d", "e"]
9. 字符串大小写转换
| api | 说明 | 
| String.toLowerCase | 创建字符串副本,将字符串转换为小写并返回结果。 | 
| String.toUpperCase | 创建字符串副本,将字符串转换为大写并返回结果。 | 
| String.toLocaleLowerCase | 创建字符串副本,将字符串转换为大写并返回结果。(特定区域) | 
| String.toLocaleUpperCase | 创建字符串副本,将字符串转换为大写并返回结果。(特定区域) | 
10. 字符串模式pattern
| api | 说明 | 
| String.match | 匹配字符串,返回匹配结果。接受一个参数可以是正则字符串或RegExp对象。只会找到第一个匹配项,返回数组。 | 
| String.matchAll | 匹配字符串,返回匹配结果。找到所有返回并一次返回所有结果 | 
| String.search | 从前向后匹配字符串,返回第一个匹配的索引。没找到返回-1 | 
| String.replace | 替换字符串,返回替换后的字符串。第一个参数是字符串只替换一次,如果是正则带全局标记则替换所有,第二个参数是待替换的文本,可以是字符串或函数 | 
| String.replaceAll |  | 
| String.split | 字符串分割,根据传入的分隔符拆分成数组。第一个参数分隔符可以是字符串也可以是RegExp对象,第二参数是数组大小,确保返回的数组不会超过制定 的大小 | 
11. localcompare() 方法
| api | 说明 | 
| String.localeCompare | 字符串比较,返回一个整数,返回1,0,-1表示两个字符串的相对顺序。 |