質問

私はHTMLコンテンツで入力したユーザーによrichtextエディタではほとんど何も以下の方にあるように想定していない身体の外部タグの心配はありません"から、"頭"またはdoctypeです。例えば、コンテンツ:

<h1>Header 1</h1>
<p>Some text here</p><p>Some more text here</p>
<div align=right><a href="x">A link here</a></div><hr />
<h1>Header 2</h1>
<p>Some text here</p><p>Some more text here</p>
<div align=right><a href="x">A link here</a></div><hr />

フレキシビリティは、私を抽出する必要があり100文字のテキスト(HTMLタグを剥).私も一定の内部留保も必要となる、水平方向の罫線とは、必ず記入してくださいます。

その出力のための上記のようなもの:

Header 1
Some text here

Some more text here

A link here

Header 2
Some text here

Some

で98文字や改行を保持します。ま、私達にできることをこれまではストリップのすべてのHTMLタグを使用Regex:

Regex.Replace(htmlStr, "<[^>]*>", "")

そのトリムの長さを正規表現としてのもの:

Regex.Match(textStr, @"^.{1,100}\b").Value

私の問題は、どのように固定回線ます。.または、出力のように:

Header 1
Some text hereSome more text here
A link here
Header 2
Some text hereSome more text

通知の接合文?その人が見せてくれその他の方法で解決します。よろしく!

追加情報:私の目的を平文梗概っHTML。いことを明らかにこの問題です。

役に立ちましたか?

解決 4

いいことではないが、理想的なソリューション.てのHTMLタグを使用私のアプリは非常に共通のもの(テーブル、リストなど)と営巣かったのはpreformat HTMLの断片を前にして保存した後ユーザー入力します。

  • すべて削除し改
  • 追加ラインを崩prefixすべてのブロックタグ(div,p,hr,h1/2/3/4 など)

り前のように抽出して表示するプレーンテキスト、regexのhtmlタグを保持するラインです。ほとんどのロケット科学が作品だった。

他のヒント

私は、これはそれが簡単なブラウザであるかのようにそれを見ることである解決するだろうかと思います。ベースタグクラスを作成し、多分InnerHTMLプロパティおよび仮想メソッドPrintElementと、それは抽象作ります。

次は、あなたが気に各HTMLタグのクラスを作成し、基本クラスから継承します。あなたの例から判断すると、あなたが最も関心のタグは、H1、P、および時間です。それは(例えば、PクラスとしてPrintElementは 『\ N [InnerHTMLの] \ n』を返す)適切InnerHTMLのに基づいて要素を印刷する文字列を返すことPrintElement方法は、そのような実装。

次に、あなたのHTMLを解析し、作成し(ツリーは良いだろうが、それはあなたの目的のために必要だようには見えません)キューにそれらのオブジェクトを追加するオブジェクトを決定しますパーサを構築します。

最後に、各要素のPrintElementメソッドを呼び出して、あなたのキューを通過します。

は、あなたが計画していたよりも多くの仕事かもしれないが、それは単純に正規表現を使用するよりもはるかに堅牢なソリューションだとあなたが将来的にあなたの心を変更することを決めた、シンプルなスタイリングを見せたいはずです、それは戻って、あなたを変更するだけですPrintElement方法ます。

情報については、正規表現でHTMLを除去することは...微妙な問題がいっぱいです。 HTML敏捷性パックには、より堅牢で、まだ一緒に出血言葉に苦しんでいることがあります:

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
string text = doc.DocumentNode.InnerText;

一つの方法は、次の3つの手順でHTMLを除去することができます:

Regex.Replace(htmlStr, "<[^/>]*>", "") // don't strip </.*>
Regex.Replace(htmlStr, "</p>", "\r\n") // all paragraph ends are replaced w/ new line
Regex.Replace(htmlStr, "<[^>]*>", "") // replace remaining </.*>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top