eugenio
Tengo un área de texto donde inserto \n
cuando el usuario presiona enter. El código de esta área de texto se envía a un servicio WCF a través de jQuery.ajax()
. no puedo guardar \n
en la base de datos, ya que no se mostrará en otras aplicaciones que consuman el servicio.
¿Cómo puedo reemplazar \n
con <br />
¿etiqueta?
solución
Bueno, muchos de ustedes lo intentaron y algunos acertaron con Javascript Regex con /g (modificador global). Al final, \n inserté dos veces, no sé por qué, mi única suposición es que jQuery en el evento de pulsación de tecla creó el doble \n que depuré.
$('#input').keypress(function (event) {
if (event.which == '13') {
inputText = $('#input').val() + '\n';
$('#input').val(inputText);
}
});
Reemplazar con alcance global
$('#input').val().replace(/\n/g, "<br />")
o
$('#input').val().replace("\n", "<br />", "g")
-
reemplaza bien globalmente pero reemplaza dos veces la etiqueta br al presionar una tecla
– eugeneK
13 de junio de 2011 a las 14:50
Teneff
se podría hacer así:
$('textarea').val().replace(/\n/g, "<br />");
editar: lo siento … las expresiones regulares en javascript no deben citarse
-
No funciona ya que quiere reemplazar
\n
y no/\n/
. Y si estaba destinado a ser una expresión regular, solo reemplazaría la primera aparición.– BrunoLM
13 de junio de 2011 a las 14:45
-
@Qtax, reemplaza solo la primera aparición de \n y omite otros
– eugeneK
13 de junio de 2011 a las 14:47
-
Simplemente use un reemplazo de cadena, como
"\n"
si realmente quieres usar expresiones regulares, puedes hacerlo/\n/g
.– Qtax
13 de junio de 2011 a las 14:48
rzetterberg
Como se dijo en los comentarios y otras respuestas, es mejor hacerlo en el lado del servidor.
Sin embargo, si desea saber cómo hacerlo en el lado del cliente, esta es una solución fácil:
textareaContent.replace(/\\n/g, "<br />");
Dónde textareaContent
es la variable con los datos en el área de texto.
Editar: Cambiado para que reemplace globalmente y no solo el primer partido.
-
Reemplaza solo la primera aparición de \n
– eugeneK
13 de junio de 2011 a las 14:45
Si es compatible con PHP, debe comprobar esto: http://php.net/manual/en/function.nl2br.php
Puede usar una función de cadena de javascript simple.
string.replace("\n", "<br>")
Senad Meškin
puede usar la función de reemplazo incorporada de javascript con un poco de ayuda de expresiones regulares, por ejemplo
$('#input').val().replace(/\n\r?/g, '<br />')
este código devolverá todas las entradas reemplazadas con <br>
amigo ricardo
Desde dentro de su servicio WCF, ¿no puede simplemente usar String.Replace
?
text = text.Replace("\n","<br />");
-
¡No hagas esto! Debe usar una expresión regular para reemplazar todas las coincidencias globalmente. Por ejemplo, en su caso, solo reemplazará la primera aparición
– Karue Benson Karue
3 abr 2020 a las 23:44
por lo general, no es una buena idea reemplazarlo en el lado del cliente
– Teneff
13 de junio de 2011 a las 14:40
@Teneff, \n no se envía entonces al servidor, parece omitido. Puedo cambiarlo en el servidor pero no recibo nada excepto texto.
– eugeneK
13 de junio de 2011 a las 14:42
También debe almacenarlo en el formato sin formato ingresado, si alguna vez agregó una nueva aplicación para recuperar datos que podrían admitir el /n, entonces seguramente debería mostrarlo. has probado a codificarlo?
– jimplode
13 de junio de 2011 a las 14:43
es
#input
un<input type="text"/>
? porque si lo es no te va a salir ninguna\n
. Si es un área de texto, le sugiero que convierta los datos cuando el usuario haga clic en el botón para enviar y no cuando escriba. Pero mejor que eso, simplemente convertiría en el lado del servidor.– BrunoLM
13 de junio de 2011 a las 15:18
@BrunoLM, #input es textarea y reemplazo \n a :br: en el envío y cambio :br: a la etiqueta br html cuando obtengo datos del servidor. ¿Por qué no lo estoy haciendo en el servidor porque además de las etiquetas br tengo imágenes y la etiqueta de la imagen es bastante larga para enviar a través del servicio al envoltorio jQuery, así que marco las etiquetas que necesito con dos puntos, al igual que los foros hacen eso con [tagname]
– eugeneK
13 de junio de 2011 a las 17:51