抽出されたテキストがList<String>
いくつかあり、リストがこの基準を満たしているかどうかを確認したい (このパターンが何度も含まれている可能性があり、すべてがリスト内の項目である):
0 // A zero should always be here when two numbers are together
\r\n // New line
number // any positive number
\r\n // New line
number // Positive number, .length < = 4
\r\n // New line
私が望むのは、最初のゼロが常に存在することを確認することです。そうでない場合は、前のリスト形式と一致するように挿入します。
text --> Insert a zero after this text
\r\n
4
\r\n
1234
\r\n
に...
text
\r\n
0 --> the inserted zero
\r\n
4
\r\n
1234
\r\n
したがって、.Insert(index, string)
ループ内で使用できることはわかっています。実際、 for を使用して、多くの醜い検証でリストをループしています
public Regex isNumber = new Regex(@"^\d+$");
// When the list is been build and a possible match is found call this method:
private void CheckIfZeroMustBeAdded(List<string> stringList)
{
int counter = 0;
for (int i = stringList.Count - 1; i > 1; i--)
{
if (stringList[i].Equals(Environment.NewLine))
{
// Do nothing
}
else if (counter == 2)
{
if (!stringList[i].Equals("0"))
{
stringList.Insert(i, string.Format("{0}{1}", Environment.NewLine,"0"));
break;
}
}
else if (ExtractionConst.isNumber.Match(stringList[i]).Success && !stringList[i].Equals("0")
{
// There are two numbers together
counter++;
}
else
{
break;
}
}
}
しかし..これを行う効率的な方法はありますか?