2009-06-24 15 views
7

Actualmente estoy en el proceso de eliminación de etiquetas html de campos dentro de una base de datos interna. Todo ha ido bien, excepto para convertir las etiquetas
en texto sin formato de los nuevos caracteres de línea.Parse <br> en texto sin formato nuevo párrafo

me gustaría convertir esto:

The victory halted Spain&rsquo;s 35-game unbeaten streak, handing the Spanish their first defeat since November 2006. The Americans now advance to the final Sunday to face the winner of Thursday&rsquo;s semifinal between South Africa and Brazil, the five-time World Cup winner. Brazil defeated the Americans, 3-0, in their earlier meeting in this tournament.<br> 
<br> 
In the final, though, the United States will be without midfielder Michael Bradley, who received a red card for a harsh tackle in the 87th minute, the third such ejection for the Americans in this tournament. It was the only careless blemish on an otherwise nearly perfect evening. 

en esto:

The victory halted Spain’s 35-game unbeaten streak, handing the Spanish their first defeat since November 2006. The Americans now advance to the final Sunday to face the winner of Thursday’s semifinal between South Africa and Brazil, the five-time World Cup winner. Brazil defeated the Americans, 3-0, in their earlier meeting in this tournament. 

In the final, though, the United States will be without midfielder Michael Bradley, who received a red card for a harsh tackle in the 87th minute, the third such ejection for the Americans in this tournament. It was the only careless blemish on an otherwise nearly perfect evening. 

estoy usando la siguiente línea de código para cambiar el
a un carácter de nueva línea:

value = value.Replace("<br>", Environment.NewLine).Trim(); 

Después de ejecutar ese código esto es lo que se guarda en mi base de datos:

The victory halted Spain's 35-game unbeaten streak, handing the Spanish their first defeat since November 2006. The Americans now advance to the final Sunday to face the winner of Thursday's semifinal between South Africa and Brazil, the five-time World Cup winner. Brazil defeated the Americans, 3-0, in their earlier meeting in this tournament. In the final, though, the United States will be without midfielder Michael Bradley, who received a red card for a harsh tackle in the 87th minute, the third such ejection for the Americans in this tournament. It was the only careless blemish on an otherwise nearly perfect evening. 

Si tomo el texto analizado guardado en mi base de datos y lo pego en el bloc de notas o Word obtengo solo un párrafo en lugar de dos.

¿Es esta la manera correcta de manejar esto? La base de datos que estoy usando es SQL Server 2005.

+1

no puedo responder su pregunta, pero debo felicitarlo por lo bien que ha explicado y documentado lo que pregunta. Tantos n00bs se habrían detenido después del primer párrafo ... – jlarson

+2

Si depura y rompe en la línea antes de guardarla en la base de datos, ¿ve 2 nuevos marcadores de línea en la cadena? – Tetraneutron

+1

Gracias. Lo depuré y rompí antes y después del cambio. Cuando miro el texto en el depurador después de que el código se ejecuta para eliminar el
, aparece como debería, con dos párrafos. Después de esa línea, el valor se guarda. Luego ejecuté una consulta para extraer el valor de la base de datos y pegarlo en Word 2003 pero solo vi un párrafo. – Brownman98

Respuesta

2

Según su comentario de seguimiento (cuando lo depuró), parece que el valor correcto se envía al menos correctamente a la base de datos.

Probablemente no sea así de simple, pero vale la pena verificar ... Cuando dice que "ejecutó una consulta para extraer el valor ... y lo pegó en Word", ¿qué está utilizando para hacer la consulta? Porque sé que si consulta algo utilizando SQL Server 2005 Management Studio en la vista predeterminada "Resultados en la cuadrícula", no representa las líneas nuevas correctamente (creo que simplemente las reemplaza con espacios) ... Si lo cambia a " Resultados a texto "(u obtienes el valor de la base de datos en tu código & depura el valor devuelto), obtendrás una representación más precisa del valor real, completa con nuevas líneas que muestran ...

0

¿Ha intentado reemplazar con los caracteres de nueva línea? es decir,

value = value.Replace("<br>", "\r\n").Trim(); 

Concedido Environment.NewLine debe hacer esto mismo pero vale la pena un tiro.

+0

Lo he intentado pero no tuve suerte. – Brownman98

4

Tu método de usar Environment.Newline es correcto. Creo que el problema está en cómo se devuelven algunas consultas directamente en SQL Server, suponiendo que está copiando/pegando directamente desde SQL Server Management Studio (o similar).

Soy 99% positivo de que si extraes los datos con un SqlConnection y luego los envías a un formato de winform, de texto, etc. ... entonces obtendrás los saltos de línea que estás buscando.

Lo siento, pero no puedo recordar por qué sucede esto al copiar/pegar directamente fuera de la cuadrícula de resultados en SQL Server.

1

Tengo curiosidad por cómo está recuperando el valor "guardado". ¿Lo está copiando de, digamos, SQL Server Management Studio o realmente está realizando una instrucción SELECT? A veces, las cuadrículas de datos que muestran información en las herramientas de SQL Server 2005 no muestran datos de cadena "exactamente", ya que se almacenan en la base de datos. Si no has realizado realmente una instrucción SELECT, intentaré eso, y me aseguraré de que no te encuentres con una peculiaridad UI.

+0

Gracias a todos por su ayuda. Estaba usando SQl Management Studio para obtener el valor. Luego, armé una sencilla aplicación WinForm para obtener el código y mostrarlo en un cuadro de texto. Se muestra correctamente con los saltos de párrafo adecuados. – Brownman98

+0

AH! ¡La peculiaridad del malvado SQL Management Studio vuelve a golpear! (Ese me ha mordido en el culo tantas veces que he perdido la cuenta ...) – jrista