由于使用.NET Framework的~2.15 billion element limitation(甚至考虑到64位Windows,.NET 4.5+和gcAllowVeryLargeObjects),我需要创建自己的BigStringBuilder来处理非常大的字符串。
不幸的是,现在我需要在该类上使用Regex。看来code exists可以在StringBuilders上运行更简单的Regex风格,尽管它似乎没有经过充分测试,并且仅支持*
(替换许多字符)和?
(替换单个字符)。>
无论如何,我没有使用StringBuilder,而是使用自己的BigStringBuilder类,其中基本的基础结构是char数组的列表(即:List<char[]> c = new List<char[]>();
)。要检索巨型字符串中的任何字符,可使用“智能”索引器访问矩形结构:
// Indexer for class BigStringBuilder:
public char this[long n]
{
get { return c[(int)(n / pagesize)][n % pagesize]; }
set { c[(int)(n / pagesize)][n % pagesize] = value; }
}
说实话,这不是一个“聪明”的想法,但这确实意味着所有字符串数据都可能散布在List中的众多char数组中。
我正在寻找使Regex(包括Regex.Replace()
)与此BigStringBuilder类结合使用的最有效方法或任何见解,请注意字符串可能会大于2GB。