0

私はSOを検索しましたが、この問題に具体的に対処するものは見つかりませんでした:だからここに行きます-段落に「return」で終わるテキスト行があるテキストファイルがあります。したがって、最終的には別々の行になります。これらの複数の行を 1 行にマージしたいと思います。C# (VS 2010) で Streamreader を使用しています。

例:

GE1:1

xxxxxxxxxxxxxxxxxxxxx

yyyyyyyyyyyyy.

hhhhhhhhhhhh。

GE1:2

zzzzzzzzzz

kkkkkkkkkkkkkkkkkkkkkk

等々....

上記の例でわかるように、3 行の段落もあれば 2 行の段落もあり、さまざまです。テキスト ファイルには、これらのパラグラフが何千もあります。

基本的に、変数「templine」に次のものを含めたいと思います:(これは、さらなる処理に使用されます)。

var templine = "xxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyy. hhhhhhhhhhhhh."

コード:

     using (StreamReader sr = new StreamReader(@"C:\Test.txt"))
        using(StreamWriter sw = new StreamWriter(@"C:\Test2.txt"))
        {
            StringBuilder sb    = new StringBuilder ( );


            while (!sr.EndOfStream)
            {
                    string templine = sr.ReadLine();  /// further processing code not relevant.

更新: 必要なのは、段落に 3 行または 2 行があるかどうかを検出する方法です。改行文字などを削除する方法を知っています.段落がいつ終了するかを知る方法がわかりません。

4

3 に答える 3

1

すべてのテキストを 1 つの文字列にまとめるには

var templine = File.ReadAllText(@"c:\temp.txt").Replace(Environment.NewLine, " ");

その .Replace は、新しい行をスペースに置き換えたいように見えるためです。

2 行または 3 行の段落に分割する場合は、区切り文字を指定する必要があります。

于 2012-10-29T05:46:43.893 に答える
0

正規表現を使用できます。

Regex parser = new Regex(@"GE\d*\:\d*\r\n(?<lines>(.*?\r\n){2,3})",
    RegexOptions.Singleline);

そして、必要なものをすべて入手してください:

string[] paragraphs = parser.Matches.Cast<Match>().Select(T =>
    Regex.Replace(T.Groups["lines"].Value, @"\t|\n|\r", string.Empty)).ToArray();

(まだテストしていません。)

于 2012-10-29T05:57:18.970 に答える
0

このように文字列から改行文字を削除できます

string replacement = Regex.Replace(templine  , @"\t|\n|\r", "");

また

templine  = templine.Replace("\n", String.Empty);
templine  = templine.Replace("\r", String.Empty);
templine = templine.Replace("\t", String.Empty);

複数の行から単一の行を作成する

于 2012-10-29T05:43:38.737 に答える