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().