将Regex与我的自定义'BigStringBuilder'类集成

时间:2019-02-16 19:06:11

标签: c# regex stringbuilder gcallowverylargeobjects

由于使用.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。

0 个答案:

没有答案