2011-12-09 6 views
0

私は、StreamReaderを介して文字列としてプロジェクトに読み込まれた.txtドキュメントのリンクをクリアする方法を見つけようとしています。C#の特定のポイント間で(大部分の)テキストを一致させて消去するにはどうすればよいですか?

まず、私は私がオンラインきちんとしたクラスを発見したリンク(それはタグの内側にあるか、またはそれだけでhttp://www.somesite.comのように、文の途中でそれ自体でアウトかもしれない)

があることを確認する必要がありますGetStringInBetweenと呼ばれ、ドキュメント内のすべてのリンクを見つけることができます。しかし、私は同じクラスを使用して、見つかったリンクと別のポイントの両方に一致するのに苦労しています - 私は改行のために行こうとしていましたので、改行とURLの終わりの間をすべて置き換えることができます - 効果的にURLを囲むテキストの塊を消去する。 「http:/ /」などのサイトを訪れることができます。

非常に長い文字列でリンクを識別するための最良の方法は何ですか、それらを消去する方法と周囲のテキスト?

また、Encoding.UTF7を使用するように指定しない限り、テキストファイルからテキストを読み込むと文字化けが発生します。これが一致する問題の原因になるかどうかはわかりません。

感謝の男女:)すべての

+0

URLパターンを送信してテキストをセグメントに分割し、後で一緒に結合することができます。 –

答えて

2

まず - あなたが解析しようとしているファイルの大きさとは?数百MBのオーダーであれば、それをRAMに完全にロードするだけで簡単に処理できます。

すべての.NET文字列が内部的にUTF-16で、エンコードを心配する必要がないように.NETをUTF-7からUTF-16に変換するので、UTF-7エンコーディングで気にする必要はありませんもう

大きな文字列を入力した後は、その上でregexpsを使用することをお勧めします。彼らはテキストも置き換えることができるので、あなたは1行のコードでファイルを "きれいにする"ことができるかもしれません!もちろん、一致するURLの正規表現は決して完璧ではなく(さらにはless so for parsing HTML)、よりエキゾチックなURLのいくつかの部分が逃げ出してしまうことが予想されます。しかし、完璧を望むなら、それは本当に難しいかもしれません。

また、ファイルが大きく、一度に1行ずつ削除するだけの場合は、ファイルを1行ずつ読み込み、各行を別々に処理してみてください。見つかった場合は、そのURLを破棄してください。 URLがない場合は、ターゲットファイルに書き込みます。それはまた書くのがとても簡単です。あなたはまだURLを見つけるための正規表現に依存しています。

+0

通常100〜kb未満ですので、メモリにロードしてください。 –

+0

改行?私は "\ r \ n"とurlとの間で "\ r"と "\ n"を別々に照合しようとしましたが、動作していないようです。 –

関連する問題