Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

String

1. 静态方法

  • .fromCharCode()
    • 判断是否为 Number 类型,且是整数
      String.fromCharCode(字符编码);
      
      • 【例子】
        String.fromCharCode(65); // A
        

2. 原型方法

  • 截取

    • substring 可把字符串按范围截取出子串返回
      字符串.substring(头索引[, 终结索引]);
      
      • 注意不包括终结索引处字符
      • 不会改变原始字符串
    • 等价于使用.slice或者.substr
  • 分割

    • split 可把字符串分割成子串数组返回
    • 情况 1
      字符串.split(分割位字符串,返回子串数组的最大长度)
      
      • 可把 字符串 替换为 正则 RegExp
  • 查找

    • 从头部的 fromIndex 处 开始向后找,返回第一个找到的索引号,找不到则返回-1

      字符串.indexOf(要查的子字符串[, fromIndex])
      
    • 从尾部的 fromIndex 处 向前开始找,返回第一个找到的索引号,找不到则返回-1

      字符串.lastIndexOf(要查的子字符串[, fromIndex])
      
  • 索引

    • 返回对应索引位置的字符
      字符串[索引];
      
      字符串.at(索引);
      
      字符串.charAt(索引);
      
    • 返回对应索引位置的字符的 Unicode 编码(或 ASCII 码)
      字符串.charCodeAt(索引);
      
  • 转大小写

    • 全部转为大写返回,注意不改变原始字符串
      字符串.toUpperCase();
      
    • 全部转为小写返回,注意不改变原始字符串
      字符串.toLowerCase();
      
  • 替换

    • replace 可执行全局匹配,有以下三种参数(子字符串/非全局/全局)
    • 情况 1
      字符串.replace(旧的子字符串,新的子字符串)
      
    • 情况 2
      字符串.replace(非全局RegExp对象,新的子字符串)
      //只替换第一个符合匹配的
      
    • 情况 3
      字符串.replace(全局RegExp对象,新的子字符串)
      //替换所有符合匹配的
      
      • 对于参数 2(新的子字符串),有一种特别的带$的模式
      • 例子
        var str3 = '这是一段原始文本,"3c这要替换4d"!';
        var newStr = str3.replace(/([0-9])([a-z])/g, "$1");
        console.log(newStr); //输出:  这是一段原始文本,"3这要替换4"!';
        
        • 解释:
          • $1 表示匹配结果中的第 1 个子匹配结果,也就是新的文本为([0-9])匹配出来的东西
          • 在这里
            • 3c 匹配到后,3 就是第 1 个子匹配
            • 4d 匹配到后,4 就是第 1 个子匹配
          • 同理
            • $n 表示匹配结果中的第 n 个子匹配结果
  • 去空格

    • trim 可去掉字符串前后多余的空格并返回,注意不会修改原字符串
      新子串 = 字符串.trim();
      
      • 可只去掉一边
        • 左边: .trimStart()
        • 右边: .trimEnd()

ES6 加入的新方法

  • 存在性判定

    • 是否包含子串
      字符串.includes(子串);
      
      • 用来替代以前的indexOf() !== -1
    • 是否以某个子串开头
      字符串.startsWith(子串);
      
    • 是否以某个子串结尾
      字符串.endsWith(子串);
      
  • 操作

    • 重复 n 遍
      字符串.repeat(n);
      

ES8 加入的新方法

  • 追加字符串至“某个满意的目标长度”
    • 在前面追加
      字符串.padStart(目标长度, 可选填充子串);
      
      • 例子
        "js".padStart(2); // 'es8'
        "js".padStart(5); // '  js'
        "js".padStart(6, "6666"); // '6666js'
        "js".padStart(6, "0"); // '0000js'
        "js".padStart(14, "system"); // 'systemsystemjs'
        
      • 目标长度
        • 太短相当于没效果
        • 太长就会被迫使用 重复的填充子串
        • 如果没填充子串,默认就是空格
    • 在后面追加
      字符串.padEnd(目标长度, 可选填充子串);