【问题标题】:Javascript 'this' keyword in String.prototype.replace functionString.prototype.replace 函数中的 Javascript 'this' 关键字
【发布时间】:2017-02-20 09:35:08
【问题描述】:

为什么我不能这样做:

string.replace(this.slice(0,1), '');

错误日志:

TypeError: this.slice is not a function

【问题讨论】:

标签: javascript string replace this slice


【解决方案1】:

要在维护原始代码的同时解决该问题,您可以使用以下代码:

let string = "string";
let newString = string.replace(string.slice(0,1), '');
console.log(newString);

但这是一种仅删除第一个字符的迂回方式,它还将替换字符串中第一个字符的任何其他出现。

您可以只使用 slice 方法返回一个字符串,其中第一个字符从原始字符串中删除:

let string = "string";
let newString = string.slice(1);
console.log(newString)

除非您打算在第一个字母上留一个空间。

记住:this 指的是被调用函数的执行上下文。假设您正在调用 string.replace(this.slice(0,1), ''); 在未启用严格模式的全局上下文中, this 将引用全局对象。如果您启用了严格模式,那么这将指未定义。无论哪种方式,它都不是指您调用替换的字符串。

【讨论】:

    【解决方案2】:

    删除第一个字符试试这个

    string.replace(/^./, '');
    

    string.slice(1)
    

    例子:

    var st = "hello";
    
    var a = st.replace(/^./, ''); // "ello"
    var b = st.slice(1); // "ello"
    

    【讨论】:

    • 您的正则表达式代码只会删除字母、数字或下划线的第一个字符。
    【解决方案3】:

    或者,你正在做的方式..

    var str = "HOME";
    console.log(str.replace(str.slice(0,1), ''));

    【讨论】:

      【解决方案4】:

      要删除字符串的第一个字符,请执行以下操作:

      string = string.substring(1);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-25
        • 2013-12-17
        相关资源
        最近更新 更多