いくつかの段落で終わった複数行の文字列を取り、それをいくつかの個々のテキストに分割しようとしていました。
行をスキップするたびに、そこに \n\r のシーケンスがあることに気付きました。その後、改行はそれぞれ \n で始まり \r で終わると思いました。そのため、次のコードを書きました。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication15
{
class Program
{
struct ParagraphInfo
{
public ParagraphInfo(string text)
{
int i;
Text = text;
i = text.IndexOf('.');
FirstSentence = text.Substring(0, i);
}
public string Text, FirstSentence;
}
static void Main(string[] args)
{
int tmp = 0;
int tmp1 = 0;
string MultiParagraphString = @"AA.aa.
BB.bb.
CC.cc.
DD.dd.
EE.ee.";
List<ParagraphInfo> Paragraphs = new List<ParagraphInfo>();
Regex NewParagraphFinder = new Regex(@"[\n][\r]");
MatchCollection NewParagraphMatches = NewParagraphFinder.Matches(MultiParagraphString);
for (int i = 0; i < NewParagraphMatches.Count; i++)
{
if (i == 0)
{
Paragraphs.Add(new ParagraphInfo((MultiParagraphString.Substring(0, NewParagraphMatches[0].Index))));
}
else if (i == (NewParagraphMatches.Count - 1))
{
tmp = NewParagraphMatches[i].Index + 3;
tmp1 = MultiParagraphString.Length - NewParagraphMatches[i].Index - 3;
Paragraphs.Add(new ParagraphInfo(MultiParagraphString.Substring(tmp, tmp1)));
}
else
{
tmp = NewParagraphMatches[i].Index + 3;
tmp1 = NewParagraphMatches[i + 1].Index - NewParagraphMatches[i].Index+3;
Paragraphs.Add(new ParagraphInfo(MultiParagraphString.Substring(tmp, tmp1)));
}
}
Console.WriteLine(MultiParagraphString);
foreach (ParagraphInfo Paragraph in Paragraphs)
{
Console.WriteLine(Paragraph.Text);
}
}
}
}
段落の各メンバーをテキスト全体と一緒に次々と印刷すると、かなり奇妙なものが現れました。段落リストの出力は次のとおりです。
AA.aa.
CC.cc。
DD。
DD.dd.
ええ。
ええええ。
なぜこれが起こり続けるのか理解できません。さらに、出力が毎回異なるのはなぜなのかわかりません。
混乱している場合は申し訳ありませんが、ここで本当に助けが必要です。誰かがそれを行うためのより良いアイデアを持っている場合は、自由に共有してください.