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...
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 rather than its value.
10 Answers
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'); =====> ERRORnum=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.