У меня есть Base64 кодированные строки вроде этого:Вставьте возврат каретки каждые 64 символов строки
SWwgw6l0YWl0IHVuIHBldGl0IG5hdmlyZS [...] 0IG5hdmlyZSA=
входной строки может большой большой (> 1 МБ). И по соображениям совместимости мне нужно добавить возврат каретки в эту большую строку каждые 64 символа.
Первое предположение у меня было использовать StringBuilder и использовать метод «AppendLine» каждые 64 символов, как это:
string InputB64_Without_CRLF = "SWwgw6l0YWl0IHVuIHBldGl0IG5hdmlyZS [...] 0IG5hdmlyZSA=";
int BufferSize = 64;
int Index = 0;
StringBuilder sb = new StringBuilder();
while (Index < strInput.Length) {
sb.AppendLine(InputB64_Without_CRLF.Substring(Index, BufferSize));
Index += BufferSize;
}
string Output_With_CRLF = sb.ToString();
Но я беспокоюсь о выполнении той части кода. Есть ли лучшее средство для вставки символа в строку в определенной позиции без перестройки другой строки?
если вы используете 'Convert.ToBase64String', вы можете использовать' параметр Base64FormattingOptions.InsertLineBreaks' –
Это кажется разумным подходом ко мне. Вы измеряли проблему с производительностью? – Blorgbeard
В основном меня беспокоило дублирование потока данных 1 МБ из одной строки в другую. Но поскольку строка .NET неизменна, мы не можем этого избежать. – Thordax