var.replace is not a function

Posted on

var.replace is not a function – Even if we have a good project plan and a logical concept, we will spend the majority of our time correcting errors abaout javascript and . Furthermore, our application can run without obvious errors with JavaScript, we must use various ways to ensure that everything is operating properly. In general, there are two types of errors that you’ll encounter while doing something wrong in code: Syntax Errors and Logic Errors. To make bug fixing easier, every JavaScript error is captured with a full stack trace and the specific line of source code marked. To assist you in resolving the JavaScript error, look at the discuss below to fix problem about var.replace is not a function.

Problem :

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.

Solution :

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.

Leave a Reply

Your email address will not be published. Required fields are marked *