を使用する場合 this postによれば(私の例では)配列が保持できる要素の最大数は、私は、文字列を分割する2 146 435 071. でサポートされている範囲をexceedeリストに追加することができますが、要素は10 000 000 000をはるかに超える可能性があります。したがって、これはSplitメソッドを使用せずに使用することもできますが、これも問題ありません。
最高のパフォーマンスでこれを行うにはどうすればよいですか? スプリット法
- には区切り文字が存在しなくなるまでリストに追加しているときに再帰的に最初に出現(described here)を除去しようとしたが、これはリストの
- 得られた要素がいくつかのラインを介してまたがることが非常に遅い
は、すべての変更の前に私のコードです:ALLTEXT値の
var allTokens = allText.Split(Delimiters).ToList();
例:
fgfg,ghgh,"gjhj
hghdg,hjhgj",ghg
ghgh,kiwj,fhgfg,
hsk,,jw,"address line1
adrress line 2
zip code
country"
問題:大容量ファイルは、私は以下の擬似コードを持ってこの問題を解決するためのOutOfMemoryException
大量のテキストです親愛なる領主に@Sachによってコメントに従います。元の文字列を複数の文字列に分割し、それらを最大サイズ以下の配列に分割するオプションはありませんか? – Sach
ファイルから一度に1行ずつ読み込み、ファイル全体をメモリに読み込むのではなく、そこから処理することをお勧めします。また、あなたがそのリストを必要とするものは、可能ならばリストにすべてロードするのではなく、ファイルから読むときにそれを扱うことをお勧めします。また、あなたの例に基づいて、私はあなたが二重引用符の中のコンマで分割したくないと思っているので、あなたが望むものは「分割」とは思わない。 – juharr
あなたはとても長い「System.String」(分割前)を持つことはできません。通常の大きなオブジェクト制限では、文字列は2バイトの「char **」値の約2 ** 30(2から30番目の)の文字列であることができます。 –