0

由于.NET Framework 有大约 21.5 亿个元素限制(即使考虑到 64 位 Windows、.NET 4.5+ 和 gcAllowVeryLargeObjects),我需要创建自己的BigStringBuilder来处理超大字符串。

不幸的是,现在我需要在课堂上使用正则表达式。似乎存在代码以在 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 大得多。

4

0 回答 0