Интеграция Regex с моим классом BigStringBuilder - PullRequest
0 голосов
/ 16 февраля 2019

Из-за ограничения ~ 2,15 миллиарда элементов в .NET Framework (даже с учетом 64-битных Windows, .NET 4.5+ и gcAllowVeryLargeObjects) мне нужно было создать собственный BigStringBuilder для работы с очень большими строками.

К сожалению, теперь мне нужно использовать Regex в классе.Похоже, что код существует для работы с более простым вариантом Regex на StringBuilders, хотя он, по-видимому, недостаточно хорошо протестирован и поддерживает только * (заменить много символов) и ? (заменить один символ).

И вообще, я не использую StringBuilder, как я уже сказал, я использую свой собственный класс BigStringBuilder, в котором фундаментальной базовой структурой является список массивов символов (т. Е. 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; }
}

Если честно, это не так «умно», но это означает, что все строковые данныепотенциально разбросаны по многочисленным массивам символов в Списке.

Я ищу наиболее эффективный способ или любые идеи, позволяющие Regex (включая Regex.Replace()) работать совместно с этим классом BigStringBuilder, учитывая, что строки могутбыть намного больше, чем 2 ГБ.

...