每72个字符后的新行

时间:2012-11-23 16:00:11

标签: .net

有一个长的base64字符串,必须每72字节用New Line格式化并转换为字节数组。

有:

Convert.ToBase64String(Convert.FromBase64String("..."), Base64FormattingOptions.InsertLineBreaks)

但它每76个字节插入一个新行。 我怎样才能将它转换回带有保留新行的字节数组?

2 个答案:

答案 0 :(得分:1)

将字符串设置为StringBuilder并在循环中使用方法Insert()

var sb = new StringBuilder("the string");
for (int i = 72; i < sb.Length; i+=74)//72 + "\r\n"
{
    sb.Insert(i, "\r\n");
}

答案 1 :(得分:0)

如果其他人想在VB中执行此操作...我将@ burning_LEGION的拆分循环转换为VB.NET,如下所示:

For i = 72 To sb.Length Step 74
    sb.Insert(i, vbCrLf)
Next

这有一个问题:当for循环开始时,“end”语句(sb.Length)仅被评估一次。例如,如果字符串长度为656个字符,则VB只会将其拆分为8行,即使在添加CRLF后,它也应该是9行。这使得最后一行比其余行更长。对于一个非常大的对象,这可能非常重要。

显然,Do While语句的行为符合要求,在字符串变长时重新计算每次迭代的“while”条件:

i = 72
Do While i < sb.Length
    sb.Insert(i, vbCrLf)
    i += 74
Loop