Brett
Estoy usando el siguiente código para intentar recortar la cadena en Javascript, pero recibo el error mencionado en el título:
function trim(str) {
return str.replace(/^\s+|\s+$/g,'');
}
Editar:
Solucioné el problema… lo siento, debería haber puesto el código sobre cómo lo estaba llamando también… me di cuenta de que accidentalmente estaba pasando el objeto del campo de formulario en lugar de su valor.
CierreVaquero
Mi conjetura es que el código que está llamando a su trim
la función es no en realidad pasándole una cadena.
Para arreglar esto, puedes hacer str
una cadena, como esta: str.toString().replace(...)
… como alper señaló a continuación.
-
str.toString()
arregló mi problema– alper
14 de junio de 2017 a las 12:41
-
Bien,
str.toString()
es solo la solución si está pasando un valor correcto que se puede convertir con éxito a una cuerda; en mi caso estaba pasando la cosa completamente equivocada. 🙂– Brett
06/03/2018 a las 18:21
-
También recibí el mismo error, probé toString() pero obtuve el error: no se puede leer la propiedad “toString” no está definida y lo mismo para “reemplazar”
–Hitesh Kumar
13 de julio de 2020 a las 14:28
-
¡Gran suposición! Resultó ser exactamente lo que me estaba perdiendo. Funcionó muy bien agregando
.toString()
.– Pegues
28 de diciembre de 2020 a las 1:32
-
Funciona para mi. agregué toString().replace(….) y funciona.
– Todo es amor
30 de junio de 2021 a las 0:47
T.Todua
problemas probables:
- variable es NÚMERO (en lugar de cadena);
num=35; num.replace(3,'three'); =====> ERROR
num=35; num.toString().replace(3,'three'); =====> CORRECT !!!!!!
num='35'; num.replace(3,'three'); =====> CORRECT !!!!!!
- variable es objeto (en lugar de cadena);
- la variable no está definida;
-
Gracias por esto, estaba enfrentando un problema, donde estaba obteniendo String en un tipo de objeto. Convertí ese objeto con toString(). ¡Y está funcionando! ¡Gracias!
– Vishwajit R. Shinde
8 de diciembre de 2014 a las 5:20
Kareem
Reemplazar no reemplazaría números. Solo reemplaza cadenas.
Esto debería funcionar.
function trim(str) {
return str.toString().replace(/^\s+|\s+$/g,'');
}
Si solo quieres recortar la cuerda. Simplemente puede usar “str.trim()”
No está pasando una cadena, de lo contrario tendría un replace
método. espero que no hayas escrito function trim(str) { return var.replace(blah); }
en vez de return str.replace
.
gion_13
Probablemente debería hacer algunas validaciones antes de ejecutar su función:
function trim(str) {
if(typeof str !== 'string') {
throw new Error('only string parameter supported!');
}
return str.replace(/^\s+|\s+$/g,'');
}
david vogt
¿Llamaste a tu función correctamente? Es decir. ¿Lo que pasa como parámetro es realmente una cadena?
De lo contrario, no veo ningún problema con su código; el siguiente ejemplo funciona como se esperaba
function trim(str) {
return str.replace(/^\s+|\s+$/g,'');
}
trim(' hello '); // --> 'hello'
Sin embargo, si llama a su función con algo que no sea una cadena, obtendrá el error anterior:
trim({}); // --> TypeError: str.replace is not a function
JC Gras
En el caso de un número, puede intentar convertirlo en cadena:
var stringValue = str.toString();
return stringValue.replace(/^\s+|\s+$/g,'');
str
probablemente no es una cadena– Peka
23 de enero de 2011 a las 17:28
Aparte: te faltan citas alrededor del
regex
cadena en sí, lo que podría no ser bueno de todos modos.– Grant Thomas
23 de enero de 2011 a las 17:30
@MrDisappointment Javascript tiene expresiones regulares literales; no es necesario que sean una cadena
– Gareth
23 de enero de 2011 a las 17:31
@Cierre: Puede encontrar (o desear iniciar) una discusión en english.stackexchange.com/search?q=contracciones
– usuario113716
23 de enero de 2011 a las 18:23
Usar
str.toString().replace(/^\s+|\s+$/g,'')
en cambio.– M Rostami
25 de febrero de 2015 a las 7:42