【发布时间】:2014-09-30 04:10:08
【问题描述】:
我有一个这样的 Base64 编码字符串:
SWwgw6l0YWl0IHVuIHBldGl0IG5hdmlyZS [...] 0IG5hdmlyZSA=
输入字符串可以很大(> 1MB)。并且出于互操作性的原因,我需要在该大字符串中每 64 个字符添加一个回车符。
我的第一个猜测是使用 stringbuilder 并每隔 64 个字符使用“AppendLine”方法,如下所示:
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参数 -
这对我来说似乎是一个合理的方法。您测量过性能问题吗?
-
我主要关心我的 1MB 数据流从一个字符串复制到另一个字符串。但由于 .NET 字符串是不可变的,我们无法避免这种情况。