跳到主要内容

all

2023年08月08日
柏拉文
越努力,越幸运
2023年02月10日
柏拉文
越努力,越幸运

String.prototype.charAt()


语法

返回值

应用

String.prototype.charCodeAt()


  • 作用

    获取字符串中某个字符的 ASCII 码值(Unicode 编码)
  • 语法

    str.charCodeAt(index)

    - index:一个大于等于 0,小于字符串长度的整数。如果不是一个数值,则默认为 0
  • 返回值

    指定 index 处字符的 UTF-16 代码单元值的一个数字;如果 index 超出范围,charCodeAt() 返回 NaN
  • 应用

    • 获取数字的 ASCII 码

      :::details 点击查看代码

      let str='234';
      let code0=str.charCodeAt(0);
      let code1=str.charCodeAt(1);
      let code2=str.charCodeAt(2);
      console.log(code0); //输出 50
      console.log(code1); //输出 51
      console.log(code2); //输出 52

      :::

String.prototype.codePointAt()


语法

返回值

应用

String.prototype.concat()


语法

对比

  • 对比一、+ 字符串 、模版字符串、String.prototype.concat() 的区别?

    • + 字符串: 加法强制将表达式转为基本类型,它优先调用 valueOf(), 如果表达式有 @@toPrimitive 方法,字符串连接时会用 default 作为 hint 调用它

    • 模版字符串: 强制将表达式转为字符串,优先调用 toString(),如果表达式有 @@toPrimitive 方法,模板字符串会用 string 作为 hint 调用它

    • String.prototype.concat(): 强制将表达式转为字符串,优先调用 toString(),如果表达式有 @@toPrimitive 方法,模板字符串会用 string 作为 hint 调用它

返回值

应用场景

String.prototype.endsWith()


语法

返回值

应用

String.prototype.fromCharCode()


语法

返回值

应用

String.prototype.fromCodePoint()


语法

返回值

应用

String.prototype.includes()


语法

返回值

应用

String.prototype.indexOf()


语法

返回值

应用

String.prototype.lastIndexOf()


语法

返回值

应用

String.prototype.localeCompare()


语法

返回值

应用

String.prototype.match()


语法

返回值

应用

String.prototype.matchAll()


语法

返回值

应用

String.prototype.normalize()


语法

返回值

应用

String.prototype.padEnd()


语法

返回值

应用

String.prototype.padStart()


语法

返回值

应用

String.prototype.raw()


语法

返回值

应用

String.prototype.repeat()


语法

返回值

应用

String.prototype.replace()


String.prototype.replace() 方法返回一个由替换值replacement替换部分或所有的模式pattern匹配项后的新字符串。模式可以是一个字符串或者一个正则表达式,替换值可以是一个字符串或者一个每次匹配都要调用的回调函数。如果pattern是字符串,则仅替换第一个匹配项。

语法

str.replace(regexp|substr, newSubStr|function)
  • regexp: 一个RegExp对象或者其字面量。该正则所匹配的内容会被第二个参数的返回值替换掉。

  • substr: 一个将被 newSubStr 替换的 字符串。其被视为一整个字符串,而不是一个正则表达式。仅第一个匹配项会被替换。

  • newSubStr (replacement): 用于替换掉第一个参数在原字符串中的匹配部分的字符串。该字符串中可以内插一些特殊的变量名

    • 特殊变量名:

      • $$: 插入一个 "$"

      • $&: 插入匹配的子串。

      • $': 插入当前匹配的子串左边的内容。

      • $n: 假如第一个参数是 RegExp 对象,并且 n 是个小于 100 的非负整数,那么插入第 n 个括号匹配的字符串。

      • $<Name>: 这里 Name 是一个分组名称。如果在正则表达式中并不存在分组(或者没有匹配),这个变量将被处理为空字符串。只有在支持命名分组捕获的浏览器中才能使用。

    • 特殊变量语法:

      replace(regexp,"$1");
      replace(regexp,"$'");
  • function: 一个用来创建新子字符串的函数,该函数的返回值将替换掉第一个参数匹配到的结果

    • 函数语法:

      replace(regexp,(match,p1,p2,……,offset,string)=>{
      return p1
      })
      • match: 匹配的子串。(对应于上述的$&。)

      • p1,p2,pn: 假如 replace() 方法的第一个参数是一个 RegExp 对象,则代表第 n 个括号匹配的字符串。(对应于上述的11,2等。)例如,如果是用 /(\a+)(\b+)/ 这个来匹配,p1 就是匹配的 \a+,p2 就是匹配的 \b+。

      • offset: 匹配到的子字符串在原字符串中的偏移量。(比如,如果原字符串是 'abcd',匹配到的子字符串是 'bc',那么这个参数将会是 1)

      • string: 被匹配的原字符串。

返回值

一个部分或全部匹配由替代模式所取代的新的字符串。

应用

  • 应用一、模板渲染

    function render(tempdate, data) {
    return template.replace(/{{\s*?(\w+)\s*?}}/g, (match, key) => {
    return key && data.hasOwnProperty(key) ? data[key] : "";
    });
    }

    const data = {
    name: "柏拉文",
    age: 23,
    };

    const template = `
    我是: {{ name }}
    年龄为: {{ age }}
    `;

    console.log(render(template, data));

String.prototype.replaceAll()


语法

返回值

应用

String.prototype.search()


语法

返回值

应用:

String.prototype.slice()


语法

返回值

应用

String.prototype.split()


语法

  • 传入正则分隔符

    // 通过分割一个或者多个空格 比如 "the sky     is      blue"
    var words = sentence.split(/\s+/)

返回值

String.prototype.substring()


语法

返回值

应用

String.prototype.toLocaleLowerCase()


语法

返回值

应用

String.prototype.toLocaleUpperCase()


语法

返回值

应用

String.prototype.toLowerCase()


语法

返回值

应用

String.prototype.toString()


字符串对象的 toString() 方法返回一个字符串,表示指定的字符串。

注意

String 对象覆盖了 Object 对象的 toString() 方法;并没有继承 Object.prototype.toString()。对于 String 对象,toString() 方法返回一个字符串来表示这个对象,和 String.prototype.valueOf() 方法的返回值相同。

语法

const str = new String("哈哈");
console.log(str.toString() === str)

返回值

String 包装对象的字符串值。

应用

String.prototype.toUpperCase()


语法

返回值

应用

String.prototype.trim()


String.prototype.trime() 方法会从一个字符串的两端删除空白字符。在这个上下文中的空白字符是所有的空白字符 (space, tab, no-break space 等) 以及所有行终止符字符(如 LF,CR等)。

语法

str.trim()

返回值

一个代表调用字符串两端去掉空白的新字符串。

应用

原理(Polyfill)

  • 细节:

    • \uFEFF: 表示字节次序标记字符,也就是 BOM
    • \xA0: 禁止自动换行空白符
    • /^[\s\uFEFF\xA0]: 以空格开始
    • | 或者
    • [\s\uFEFF\xA0]$/: 以空格结束
  • 实现:

    String.prototype.trim = function () {
    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");
    };
    const str = " 柏拉图 ";
    str.trim();
    console.log(str.trim());

String.prototype.trimEnd()


语法

返回值

应用

String.prototype.trimStart()


语法

返回值

应用

String.prototype.valueOf()


valueOf() 方法返回 String 对象的原始值

语法

const str = "str";
console.log(str.valueOf()); // str
console.log(str.valueOf() === str); // true