Ответ 1
Я предполагаю, что код, который вызывает вашу функцию trim
самом деле не передает ей строку.
Чтобы это исправить, вы можете сделать строку str
, например: str.toString().replace(...)
... как указал Альпер ниже.
Я использую приведенный ниже код, чтобы попытаться обрезать строку в Javascript, но я получаю ошибку, упомянутую в заголовке:
function trim(str) {
return str.replace(/^\s+|\s+$/g,'');
}
Edit:
Я исправил проблему... извините, я должен был поставить код на то, как я это называл.... понял, что я случайно передавал объект самого поля формы, а не его значение.
Я предполагаю, что код, который вызывает вашу функцию trim
самом деле не передает ей строку.
Чтобы это исправить, вы можете сделать строку str
, например: str.toString().replace(...)
... как указал Альпер ниже.
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
.
Вы правильно назвали свою функцию? То есть. это то, что вы передаете как параметр, действительно строку?
В противном случае я не вижу проблемы с вашим кодом - приведенный ниже пример работает как ожидалось
function trim(str) {
return str.replace(/^\s+|\s+$/g,'');
}
trim(' hello '); // --> 'hello'
Однако, если вы вызываете свой functoin с чем-то нестрочным, вы действительно получите ошибку выше:
trim({}); // --> TypeError: str.replace is not a function
В случае номера вы можете попробовать преобразовать в строку:
var stringValue = str.toString();
return stringValue.replace(/^\s+|\s+$/g,'');
Вы должны использовать toString() метод java script для преобразования в строку before, потому что метод replace является строковой функцией.
Я исправил проблему... извините, я должен был поставить код на то, как я тоже это называл.... понял, что я случайно передавал объект самого поля формы, а не его значение.
Спасибо за ваши ответы.:)