var.replace не является функцией

Я использую приведенный ниже код, чтобы попытаться обрезать строку в Javascript, но получаю ошибку, упомянутую в заголовке:

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

Редактировать:

Я исправил проблему.... извините, я должен был поставить код на то, как я его тоже вызывал.... понял, что я случайно передавал сам объект поля формы, а не его значение.

9 ответов

Решение

Я думаю, что код, который вызывает ваш trim Функция на самом деле не передает ей строку.

Если вы отправите этот код, я мог бы обновить свой ответ.

возможные проблемы:

  • переменная NUMBER (вместо строки);
    num=35; num.replace(3,'three'); =====> ERROR
    num=35; num.toString().replace(3,'three'); =====> CORRECT !!!!!!
    num='35'; num.replace(3,'three'); =====> CORRECT !!!!!!
  • переменная является объектом (вместо строки);
  • переменная не определена;

Заменить не заменит числа. Он заменяет только строки.

Это должно работать.

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

Если вы только хотите обрезать строку. Вы можете просто использовать "str.trim()"

Вам, вероятно, следует выполнить некоторые проверки перед тем, как вы фактически выполните свою функцию:

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

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

Вы не передаете строку, иначе она будет иметь replace метод. Я надеюсь, что вы не печатали function trim(str) { return var.replace(blah); } вместо return str.replace,

В случае числа вы можете попытаться преобразовать в строку:

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

Вы правильно вызвали свою функцию? То есть. вещь, которую вы передаете как параметр, действительно строка?

В противном случае я не вижу проблем с вашим кодом - приведенный ниже пример работает как положено

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


trim('    hello   ');  // --> 'hello'

Однако, если вы называете свой functoin чем-то нестроковым, вы действительно получите ошибку выше:

trim({});  // --> TypeError: str.replace is not a function

Вы должны использовать метод toString() java-скрипта для преобразования в строку раньше, потому что метод replace - это строковая функция.

Я исправил проблему.... извините, мне следовало поставить код на то, как я его тоже вызывал.... понял, что я случайно передавал сам объект поля формы, а не его значение.

В любом случае, спасибо за ваши ответы.:)

Убедитесь , что вы передаете строку методу "replace". Была такая же проблема, и я решил ее, передав строку. Вы также можете преобразовать его в строку, используя метод toString().

Другие вопросы по тегам