在某些字符计数后拆分字符串

我需要一些帮助。 我正在使用包含exception详细信息的文本文件编写错误日志。 有了这个我希望我的堆栈跟踪细节写成如下所示,而不是直线,以避免用户滚动记事本的滚动条或让我们说在第100个字符,字符串将写入下一行。 我不知道如何实现这一目标。 提前致谢。

样品(这是我目前的直线输出)

STACKTRACE: at stacktraceabcdefghijklmnopqrstuvwxyztacktraceabcdefghijklmnopqrswxyztacktraceabcdefghijk 

* *我想要的输出(字符串将在特定字符数后写入下一行)

 STACKTRACE: at stacktraceabcdefghijklmno pqrstuvwxyztacktraceabcdefgh ijklmnopqrswxyztacktraceabcd efghijk 

我的代码

 builder.Append(String.Format("STACKTRACE:")); builder.AppendLine(); builder.Append(logDetails.StackTrace); 

下面的示例每行分割10个字符,您可以根据需要更改{N} ,其中N可以是任意数字。

 var input = "stacktraceabcdefghijklmnopqrstuvwxyztacktraceabcdefghijklmnopqrswxyztacktraceabcdefghijk"; var regex = new Regex(@".{10}"); string result = regex.Replace(input, "$&" + Environment.NewLine); Console.WriteLine(result); 

这是演示

您可以使用以下代码:

 string yourstring; StringBuilder sb = new StringBuilder(); for(int i=0;i 

你可以为此创建一个函数

  string splitat(string line, int charcount) { string toren = ""; if (charcount>=line.Length) { return line; } int totalchars = line.Length; int loopcnt = totalchars / charcount; int appended = 0; for (int i = 0; i < loopcnt; i++) { toren += line.Substring(appended, charcount) + Environment.NewLine; appended += charcount; int left = totalchars - appended; if (left>0) { if (left>charcount) { continue; } else { toren += line.Substring(appended, left) + Environment.NewLine; } } } return toren; } 

最好,最简单和通用答案:)。 只需将splitAt的值设置为您希望它中断后的字符数。

 string originalString = "1111222233334444"; List test = new List(); int splitAt = 4; // change 4 with the size of strings you want. for (int i = 0; i < originalString.Length; i = i + splitAt) { if (originalString.Length - i >= splitAt) test.Add(originalString.Substring(i, splitAt)); else test.Add(originalString.Substring(i,((originalString.Length - i)))); }