Карточка Senior Строки обновлено
Подстроки без аллокаций
Вопрос
Как разобрать большую строку на части, не создавая новую строку на каждый кусок?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
Брать ReadOnlySpan<char: s.AsSpan(start, len) это окно на исходные данные без копирования. Парсеры принимают span: int.Parse(span), span.IndexOf(','), span.Trim(), MemoryExtensions.Split (.NET 8).
Ответ
Брать ReadOnlySpan<char>: s.AsSpan(start, len) это окно на исходные данные без копирования.
Парсеры принимают span: int.Parse(span), span.IndexOf(','), span.Trim(), MemoryExtensions.Split (.NET 8).
Строку создают только там, где она реально нужна (span.ToString()).
Разбор
Substring всегда выделяет новую строку. В горячих циклах парсинга переход на span убирает основную часть аллокаций.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.