2009-06-24 7 views
7

Je suis en train d'enlever les balises HTML des champs dans une base de données interne. Tout s'est bien passé, sauf pour transformer les balises
en caractères de nouvelle ligne en texte brut.Parse <br> texte brut nouveau paragraphe

Je voudrais convertir ceci:

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. 

pour ceci:

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. 

J'utilise la ligne de code suivante pour changer le
à un caractère de nouvelle ligne:

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

Après l'exécution de ce code est ce qui est enregistré dans ma base de données:Si je prends le texte analysé enregistré à ma base de données et le collez dans le bloc-notes ou Word je reçois seulement un paragraphe au lieu de deux.

Est-ce la bonne façon de gérer cela? La base de données que je utilise est SQL Server 2005.

+1

Je ne peux pas répondre à votre question, mais je dois vous féliciter de la façon dont vous avez expliqué et documenté ce que vous demandez. Tant de n00bs se seraient arrêtés après le premier paragraphe ... – jlarson

+2

Si vous déboguez et cassez la ligne avant qu'elle ne soit enregistrée dans la base de données, voyez-vous 2 nouveaux marqueurs de ligne dans la chaîne? – Tetraneutron

+1

Merci. J'ai fait déboguer et casser avant et après le changement. Lorsque je regarde le texte dans le débogueur après que le code s'exécute pour supprimer le
il apparaît comme il se doit, avec deux paragraphes. Après cette ligne, la valeur est enregistrée. Puis j'ai couru une requête pour tirer la valeur de la base de données et l'ai collée à Word 2003 mais j'ai vu seulement un paragraphe. – Brownman98

Répondre

2

Sur la base de votre suivi commentaire (lorsque vous débogués), il semble que la valeur correcte est au moins envoyé à la base de données correctement.

Ce n'est probablement pas si simple, mais ça vaut le coup de vérifier ... Quand vous dites "vous avez couru une requête pour extraire la valeur ... et l'avez collée à Word", qu'utilisez-vous pour faire la requête? Parce que je sais si vous interrogez quelque chose à l'aide de SQL Server 2005 Management Studio dans la vue "Results to Grid" par défaut, il ne rend pas de nouvelles lignes correctement (je pense qu'il les remplace simplement par des espaces) ... Results to Text "(ou vous obtenez la valeur de la base de données dans votre code & debug la valeur retournée), vous obtiendrez une représentation plus précise de la valeur réelle, complète avec de nouvelles lignes montrant ...

0

Avez-vous essayé de remplacer avec des personnages réels newline? à savoir

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

Accordé Environment.NewLine devrait faire la même chose, mais il vaut le coup.

+0

J'ai essayé mais pas de chance. – Brownman98

4

Votre méthode d'utiliser Environment.Newline est correct. Je crois que le problème est de savoir comment certaines requêtes sont renvoyées directement dans SQL Server, en supposant que vous copiez/collez directement à partir de SQL Server Management Studio (ou similaire). Je suis environ 99% positif que si vous extrayez les données avec un SqlConnection, puis le publiez dans un winform, un fichier texte, etc ... alors vous obtiendrez les sauts de ligne que vous recherchez.

Désolé, mais je ne me souviens pas pourquoi cela se produit lorsque vous copiez/collez directement sur la grille des résultats dans SQL Server.

1

Je suis curieux de savoir comment vous récupérez la valeur « enregistrée ». Est-ce que vous le copiez à partir, disons, de SQL Server Management Studio, ou en train d'exécuter une instruction SELECT? Parfois, les grilles de données qui affichent des informations dans les outils SQL Server 2005 n'affichent pas les données de chaîne "exactement" car elles sont stockées dans la base de données. Si vous n'avez pas réellement exécuté une instruction SELECT, j'essayerais cela, et m'assurerais que vous ne rencontrez pas de problème d'interface utilisateur.

+0

Merci à tous pour votre aide. J'utilisais SQl Management Studio pour obtenir la valeur. J'ai ensuite mis en place une application WinForm simple pour obtenir le code et l'afficher dans une zone de texte. Il s'affiche correctement avec les sauts de paragraphe appropriés. – Brownman98

+0

AH! Le démon de SQL Management Studio mal frappe à nouveau! (Celui-là m'a mordu le cul tant de fois j'ai perdu le compte ...) – jrista

Questions connexes