2009-06-24 7 views
7

Attualmente sto rimuovendo tag HTML dai campi all'interno di un database interno. Tutto è andato liscio, tranne che per trasformare i tag
in caratteri di nuova riga in testo normale.Parse <br> in testo chiaro nuovo paragrafo

vorrei convertire questo:

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. 

per questo:

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. 

Sto usando la seguente riga di codice per modificare il
ad un carattere di nuova riga:

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

Dopo aver eseguito questo codice, questo è ciò che viene salvato nel mio database:

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. 

Se prendo il testo analizzato salvato nel mio database e lo incollo nel blocco note o Word ottengo solo un paragrafo anziché due.

È questo il modo corretto di gestirlo? Il database che sto utilizzando è SQL Server 2005.

+1

Non posso rispondere alla tua domanda, ma devo complimentarti per quanto bene hai spiegato e documentato ciò che stai chiedendo. Così tanti n00bs si sarebbero fermati dopo il primo paragrafo ... – jlarson

+2

Se si esegue il debug e si interrompe sulla linea prima di essere salvata nel database vedete 2 nuovi line marker nella stringa? – Tetraneutron

+1

Grazie. Ho fatto il debug e l'interruzione prima e dopo il cambiamento. Quando guardo il testo nel debugger dopo che il codice è stato eseguito per rimuovere lo
, appare come dovrebbe, con due paragrafi. Dopo quella riga il valore viene salvato. Quindi ho eseguito una query per estrarre il valore dal database e incollarlo in Word 2003 ma ho visto solo un paragrafo. – Brownman98

risposta

2

In base al commento di follow-up (quando lo si esegue il debug), sembra che il valore corretto sia stato inviato al database correttamente.

Probabilmente non è così semplice, ma vale la pena controllare ... Quando si dice che "è stata eseguita una query per estrarre il valore ... e incollato in Word", cosa si utilizza per eseguire la query? Perché so che se si esegue una query utilizzando SQL Server 2005 Management Studio nella visualizzazione "Risultati alla griglia" predefinita, non esegue correttamente il rendering di nuove righe (penso che li sostituisca semplicemente con spazi) ... Se si passa a " risultati to Text"(o si ottiene il valore dal database nel codice di debug & il valore restituito), si otterrà una rappresentazione più accurata del valore effettivo, completo di nuove linee che mostrano ...

0

Hai provato a sostituire con caratteri di nuova riga effettivi? vale a dire

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

Concesso Environment.NewLine dovrebbe fare la stessa cosa, ma ne vale la pena un colpo.

+0

L'ho provato ma senza fortuna. – Brownman98

4

il tuo metodo di utilizzare Environment.Newline è corretto. Credo che il problema sia relativo al modo in cui alcune query vengono restituite direttamente in SQL Server, assumendo che si stia copiando/incollando direttamente da SQL Server Management Studio (o simile).

Sono circa il 99% positivo del fatto che se si estrae i dati con un SqlConnection e lo si invii a un winform, un file di testo, ecc., Allora si otterranno le interruzioni di riga che si stanno cercando.

Siamo spiacenti, ma non riesco a ricordare perché questo accade quando si copia/incolla direttamente dalla griglia dei risultati in SQL Server.

1

Sono curioso di sapere come si sta recuperando il valore "salvato". Lo stai copiando da, ad esempio, SQL Server Management Studio o eseguendo effettivamente un'istruzione SELECT? A volte, le griglie di dati che visualizzano le informazioni negli strumenti di SQL Server 2005 non visualizzano i dati di stringa "esattamente" come sono memorizzati nel database. Se non hai effettivamente eseguito un'istruzione SELECT, proverei a farlo, e assicurati che non ti imbatti in una stranezza dell'interfaccia utente.

+0

Grazie a tutti per il loro aiuto. Stavo usando SQl Management Studio per ottenere il valore. Quindi ho creato una semplice app WinForm per ottenere il codice e visualizzarlo in una casella di testo. Viene visualizzato correttamente con le interruzioni di paragrafo appropriate. – Brownman98

+0

AH! Il malvagio capriccio di SQL Management Studio colpisce ancora! (Quello mi ha morso in culo così tante volte che ho perso il conto ...) – jrista

Problemi correlati