var.replace不是一个函数

Bre*_*ett 118 javascript

我正在使用下面的代码尝试修剪Javascript中的字符串,但我收到标题中提到的错误:

function trim(str) {
    return str.replace(/^\s+|\s+$/g,'');
}
Run Code Online (Sandbox Code Playgroud)

编辑:

我解决了这个问题....对不起我应该把代码放在我如何调用它上面....意识到我不小心传递了表单字段本身的对象而不是它的值.

Clo*_*boy 167

我的猜测是,调用你的trim函数的代码实际上并没有将字符串传递给它.

如果您发布该代码,我可以更新我的答案.

  • `str.toString()`解决了我的问题. (35认同)

T.T*_*dua 83

可能的问题:

  • 变量是NUMBER(而不是字符串);
    num=35; num.replace(3,'three'); =====> ERROR
    num=35; num.toString().replace(3,'three'); =====> CORRECT !!!!!!
    num='35'; num.replace(3,'three'); =====> CORRECT !!!!!!
  • 变量是对象(而不是字符串);
  • 变量未定义;


Kar*_*eem 13

替换不会取代数字.它只替换字符串.

这应该工作.

function trim(str) {
    return str.toString().replace(/^\s+|\s+$/g,'');
}
Run Code Online (Sandbox Code Playgroud)

如果你只想修剪弦乐.你可以简单地使用"str.trim()"


med*_*iev 6

您没有传递字符串,否则它将具有replace方法。希望您function trim(str) { return var.replace(blah); }不要输入而不是return str.replace


gio*_*_13 6

在实际执行函数之前,您应该进行一些验证:

function trim(str) {
    if(typeof str !== 'string') {
        throw new Error('only string parameter supported!');
    }

    return str.replace(/^\s+|\s+$/g,'');
}
Run Code Online (Sandbox Code Playgroud)


Dav*_*ogt 5

您是否正确调用了函数?就是 您作为参数传递的东西真的是字符串吗?

否则,我看不到您的代码有问题-以下示例按预期工作

function trim(str) {
    return str.replace(/^\s+|\s+$/g,'');
}


trim('    hello   ');  // --> 'hello'
Run Code Online (Sandbox Code Playgroud)

但是,如果使用非字符串形式调用functoin,则确实会出现上述错误:

trim({});  // --> TypeError: str.replace is not a function
Run Code Online (Sandbox Code Playgroud)


J.C*_*ras 5

如果是数字,则可以尝试转换为字符串:

var stringValue = str.toString();
return stringValue.replace(/^\s+|\s+$/g,'');
Run Code Online (Sandbox Code Playgroud)