美文网首页
二、String 方法

二、String 方法

作者: 小小_绿 | 来源:发表于2019-08-11 09:24 被阅读0次

String.fromCodePoint() 和 String.fromCharCode()

用于从 Unicode 码点返回对应字符

JavaScript 内部,字符以 UTF-16 的格式储存,每个字符固定为2个字节

  • String.fromCodePoint() ES6新方法,可以识别大于0xFFFF字符,若有多个参数,会合并成一个字符串返回
  • String.fromCharCode() ES5方法,无法识别大于0xFFFF字符,若超出这回溢出,最高位会被舍弃

codePointAt() 和 charCodeAt()

  • charCodeAt(): 无法处理Unicode 码点大于0xFFFF的字符;只能分别返回前两个字节和后两个字节的值。
  • codePointAt() : 对于Unicode 码点大于0xFFFF的字符,能够正确处理 4 个字节储存的字符,返回一个字符的码点。方法返回的是码点的十进制值。会正确返回 32 位的 UTF-16 字符的码点。对于那些两个字节储存的常规字符,它的返回结果与charCodeAt()方法相同。

String.raw()

  • 返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,会将所有变量替换,而且对斜杠进行转义,往往用于模板字符串的处理方法;
    若原字符串的斜杠已经转义,那么String.raw()会进行再次转义
      String.raw`Hi\n${4+3}!`;
      // 返回 "Hi\\n7!"

      String.raw`Hi\\n`
      // 返回 "Hi\\\\n"
      String.raw`Hi\\n` === "Hi\\\\n" // true
  • String.raw()方法作为正常的函数使用。它的第一个参数,应该是一个具有raw属性的对象,且raw属性的值应该是一个数组。
    String.raw()实现代码
String.raw = function (strings, ...values) {
  let output = '';
  let index;
  for (index = 0; index < values.length; index++) {
    output += strings.raw[index] + values[index];
  }
  output += strings.raw[index]
  return output;
}
String.raw({ raw: 'test' }, 0, 1, 2);
// 't0e1s2t'

indexOf ,includes(), startsWith(), endsWith()

  • indexOf(): 来确定一个字符串是否包含在另一个字符串中, -1不存在;0,1存在
  • includes():ES6,返回布尔值,表示是否找到了参数字符串。
  • startsWith():ES6,返回布尔值,表示参数字符串是否在原字符串的头部。
  • endsWith():ES6,返回布尔值,表示参数字符串是否在原字符串的尾部。

repeat()

返回一个新字符串,表示将原字符串重复n次

'a'.repeat(3) // "aaa"
'la'.repeat('la') // ""
'na'.repeat('3') // "nanana"
  • 参数若是小数,则取整;0 到-1 之间的小数,则等同于 0
  • 参数是负数或者Infinity,会报错
  • 参数NaN等同于 0
  • 如果repeat的参数是字符串,则会先转换成数字

padStart(),padEnd()

ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全

  • padStart() :头部补全;
  • padEnd(): 尾部补全
    第一个参数是字符串补全生效的最大长度,第二个参数是用来补全的字符串。
场景
  • 原字符串的长度,等于或大于最大长度,则字符串补全不生效,返回原字符串;
  • 用来补全的字符串与原字符串,两者的长度之和超过了最大长度,则会截去超出位数的补全字符串。
  • 省略第二个参数,默认使用空格补全长度
用途
  • 为数值补全指定位数
  • 提示字符串格式
'1'.padStart(10, '0') // "0000000001"
'12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"
'09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"

trimStart(),trimEnd()

ES2019, 返回的都是新字符串,不会修改原始字符串

  • trimStart()消除字符串头部的空格;
  • trimEnd()消除尾部的空格

matchAll()

返回一个正则表达式在当前字符串的所有匹配

相关文章

网友评论

      本文标题:二、String 方法

      本文链接:https://www.haomeiwen.com/subject/xjlkjctx.html