Javascript var.replace不是一个函数
我正在使用下面的代码尝试修剪Javascript中的字符串,但遇到了标题中提到的错误:Javascript var.replace不是一个函数,javascript,Javascript,我正在使用下面的代码尝试修剪Javascript中的字符串,但遇到了标题中提到的错误: function trim(str) { return str.replace(/^\s+|\s+$/g,''); } 编辑: 我解决了这个问题。。。。对不起,我也应该把代码写在我怎么称呼它上。。。。意识到我无意中传递了表单字段本身的对象,而不是它的值。您没有传递字符串,否则它将有一个replace方法。我希望您没有键入function trim(str){return var.replace(bl
function trim(str) {
return str.replace(/^\s+|\s+$/g,'');
}
编辑:
我解决了这个问题。。。。对不起,我也应该把代码写在我怎么称呼它上。。。。意识到我无意中传递了表单字段本身的对象,而不是它的值。您没有传递字符串,否则它将有一个
replace
方法。我希望您没有键入function trim(str){return var.replace(blah);}
而不是return str.replace
我猜调用trim
函数的代码实际上并没有向它传递字符串
要解决此问题,可以将str
设置为字符串,如下所示:str.toString().replace(…)
…如下所述。您是否正确调用了函数?作为参数传递的东西真的是字符串吗 否则,我看不出您的代码有任何问题-下面的示例按预期工作
function trim(str) {
return str.replace(/^\s+|\s+$/g,'');
}
trim(' hello '); // --> 'hello'
但是,如果您使用非字符串调用function,则确实会出现上述错误:
trim({}); // --> TypeError: str.replace is not a function
我解决了这个问题。。。。对不起,我也应该把代码写在我怎么称呼它上。。。。意识到我无意中传递了表单字段本身的对象,而不是它的值
谢谢您的回复。:) 在实际执行函数之前,您可能应该进行一些验证:
function trim(str) {
if(typeof str !== 'string') {
throw new Error('only string parameter supported!');
}
return str.replace(/^\s+|\s+$/g,'');
}
可能的问题:
- 变量是编号(而不是字符串);
num=35;num.replace(3,'three');====>错误
num=35;num.toString().replace(3,'three');==>正确代码>
num='35';num.replace(3,'three');====>正确代码>
- 变量是对象(而不是字符串)李>
- 变量未定义李>
function trim(str) {
return str.toString().replace(/^\s+|\s+$/g,'');
}
如果你只想修剪绳子。您只需使用“str.trim()”就可以尝试将数字转换为字符串:
var stringValue = str.toString();
return stringValue.replace(/^\s+|\s+$/g,'');
确保将字符串传递给“replace”方法。有同样的问题,通过传递字符串解决了它。您还可以使用toString()方法将其设置为字符串。
str
可能不是字符串作为旁白:您在regex
字符串本身周围缺少引号,这可能并不好。@Javascript有文字正则表达式-它们不需要是字符串string@Closure:您可能会发现(或希望开始)使用str.toString().replace(/^\s+\s+$/g')
进行讨论。您可以编辑问题,这比自己给出答案要好。哦,当你这么做的时候,选择一个好人并接受他们的答案。:-)@克里斯托弗:没有;如果他自己解决了,他应该写下他的答案并接受它。这是最佳实践。把答案放在问题中,接受任意的答案是不正确的。@Tomalak:这里有几个正确的答案,比这个答案更古老。我同意接受你自己的答案,如果它是第一个正确的是一件好事™, 当然,我不想建议在问题中加入解决方案。@Christopher:被接受的答案应该是包含OP使用的解决方案的答案。为此,我遇到了一个问题,我在一个typeof对象中得到了字符串。我用toString()转换了那个对象。它正在工作!谢谢大家!str.toString()
修复了我的问题。好吧,str.toString()
是唯一的解决方案,如果你传递了一个可以成功转换为字符串的正确值;在我的情况下,我传递的东西完全是错误的我也得到了同样的错误,我尝试了toString(),但得到的错误是:无法读取属性“toString”是未定义的,与“replace”相同,这是一个很好的猜测!结果恰恰是我所缺少的。通过添加.toString()
,效果非常好。