var.replace is not a function
I'm using the below code to try to trim the string in Javascript but am getting the error mentioned in the title:
function trim(str) {
return str.replace(/^\s+|\s+$/g,'');
}
Edit:
I fixed the problem.... sorry I should have put the code on how I was calling it too.... realized I accidentally was passing the object of the form field itself r开发者_C百科ather than its value.
My guess is that the code that's calling your trim
function is not actually passing a string to it.
To fix this, you can make str
a string, like this: str.toString().replace(...)
...as alper pointed out below.
probable issues:
- variable is NUMBER (instead of string);
num=35; num.replace(3,'three'); =====> ERROR
num=35; num.toString().replace(3,'three'); =====> CORRECT !!!!!!
num='35'; num.replace(3,'three'); =====> CORRECT !!!!!!
- variable is object (instead of string);
- variable is not defined;
Replace wouldn't replace numbers. It replaces strings only.
This should work.
function trim(str) {
return str.toString().replace(/^\s+|\s+$/g,'');
}
If you only want to trim the string. You can simply use "str.trim()"
You are not passing a string otherwise it would have a replace
method. I hope you didnt type function trim(str) { return var.replace(blah); }
instead of return str.replace
.
You should probably do some validations before you actually execute your function :
function trim(str) {
if(typeof str !== 'string') {
throw new Error('only string parameter supported!');
}
return str.replace(/^\s+|\s+$/g,'');
}
Did you call your function properly? Ie. is the thing you pass as as a parameter really a string?
Otherwise, I don't see a problem with your code - the example below works as expected
function trim(str) {
return str.replace(/^\s+|\s+$/g,'');
}
trim(' hello '); // --> 'hello'
However, if you call your functoin with something non-string, you will indeed get the error above:
trim({}); // --> TypeError: str.replace is not a function
In case of a number you can try to convert to string:
var stringValue = str.toString();
return stringValue.replace(/^\s+|\s+$/g,'');
You should use toString() Method of java script for the convert into string before because replace method is a string function.
I fixed the problem.... sorry I should have put the code on how I was calling it too.... realized I accidentally was passing the object of the form field itself rather than it's value.
Thanks for your responses anyway. :)
make sure you are passing string to "replace" method. Had same issue and solved it by passing string. You can also make it to string using toString() method.
精彩评论