2009-06-24 13 views
7

現在、内部データベース内のフィールドからhtmlタグを削除しています。
タグをプレーンテキストの改行文字に変換する以外は、すべてがスムーズに進んでいます。構文解析<br>とプレーンテキストの新しい段落

私は、この変換したいと思います:

:私は改行文字に
を変更するには、次のコード行を使用しています

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. 

:これにで

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. 

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

このコードを実行した後、これが私のデータベースに保存されているものです:

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. 

私は私のデータベースに保存されて解析されたテキストを取得し、メモ帳やWordに貼り付けた場合は、私が代わりに2の唯一の段落を取得します。

これを正しく処理する方法はありますか?私が使用しているデータベースはSQL Server 2005です。

+1

私はあなたの質問に答えることができませんが、あなたが尋ねていることをどれだけうまく説明し文書化したかを褒める必要があります。多くのn00bsが最初の段落の後に停止してしまったでしょう... – jlarson

+2

データベースに保存される前にデバッグしてブレークすると、文字列に2つの新しい行マーカーが表示されますか? – Tetraneutron

+1

ありがとうございます。変更前と変更後にデバッグして中断しました。
を削除するコードが実行された後で、デバッガのテキストを見ると、2段落で表示されるはずです。その行の後に値が保存されます。それから、データベースから値を取り出してWord 2003に貼り付けるクエリを実行しましたが、段落が1つしか見えませんでした。 – Brownman98

答えて

2

フォローアップのコメント(デバッグ時)に基づいて、正しい値が少なくともデータベースに正しく送信されているように見えます。

これはおそらく単純ではありませんが、チェックする価値があります。「値を取得してWordに貼り付けるクエリを実行した」と言ったら、何を使ってクエリを実行していますか?既定の "Results to Grid"ビューでSQL Server 2005 Management Studioを使用して何かを照会すると、新しい行が適切に表示されません(スペースで置き換えられると思います)... "結果をテキストに変換する(またはコードが返された値をデバッグするデータベースの値を取得する)場合、実際の値をより正確に表現し、新しい行が表示されます...

0

実際の改行文字で置き換えようとしましたか? Environment.NewLine 確かすなわち

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

は、これと同じことを行うが、それはショットの価値があるはずです。

+0

私はそれを試みましたが運はありません。 – Brownman98

4

環境の使用.Newlineが正しいです。 SQL Server Management Studio(またはそれに類似したもの)から直接コピー/貼り付けを行っていると仮定して、いくつかのクエリがSQL Serverに直接返される方法が問題です。

SqlConnectionでデータを取り出してwinform、テキストファイルなどに出力した場合、探している改行が得られます。

申し訳ありませんが、SQL Serverの結果のグリッドから直接コピー/貼り付けすると、この現象が発生する理由を思い出しません。

1

「保存済み」の値をどのように取得しているのか不思議です。 SQL Server Management Studioなどからコピーしていますか、実際にSELECT文を実行していますか?場合によっては、SQL Server 2005ツールに情報を表示するデータグリッドは、データベースに格納されている文字列データを「正確に」表示しないことがあります。実際にSELECTステートメントを実行していない場合、私はそれを試み、あなたがUIの奇妙なことに遭遇していないことを確認します。

+0

おかげさまで皆様のご協力をいただきました。私は価値を得るためにSQl Management Studioを使っていました。 次に、簡単なWinFormアプリケーションを組み合わせてコードを取得し、テキストボックスに表示します。適切な段落区切りで正しく表示されます。 – Brownman98

+0

AH!邪悪なSQL Management Studioの変種が再び襲ってきます! (それは私がカウントを失ったので、多くの回、お尻のビット私を持っている...) – jrista