在特定字符计数后拆分字符串

5
我需要帮忙。我正在使用异常详细信息的文本文件编写错误日志。我希望我的堆栈跟踪详细信息像下面这样写,而不是在直线上写,以避免用户滚动记事本的滚动条,或者说在第100个字符时,字符串将被写到下一行。我不知道如何实现这一点。提前致谢。 示例(这是我当前的输出全部在一行中)
STACKTRACE:

at stacktraceabcdefghijklmnopqrstuvwxyztacktraceabcdefghijklmnopqrswxyztacktraceabcdefghijk

**我期望的输出(在某个字符计数后,该字符串将写入下一行)

STACKTRACE:

at stacktraceabcdefghijklmno    
pqrstuvwxyztacktraceabcdefgh    
ijklmnopqrswxyztacktraceabcd    
efghijk

我的代码

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

这个链接应该会有帮助。 - user2771704
这个回答解决了你的问题吗?如何在每N个字符/数字处拆分字符串/数字? - StayOnTarget
4个回答

11

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

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

这里是演示


你的代码运行得很好。我简直不敢相信这么容易。非常感谢你的帮助!:) - Moccassin

1

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

string originalString = "1111222233334444";
List<string> test = new List<string>();
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))));
}

1
您可以使用以下代码:
string yourstring;

StringBuilder sb = new StringBuilder();

for(int i=0;i<yourstring.length;++i){
if(i%100==0){
sb.AppendLine();
}
sb.Append(yourstring[i]);
}

谢谢,你的代码也可以运行。但是我更喜欢在我的代码中尽量减少循环。再次感谢你的回答。非常感激。 :) - Moccassin

1
你可以为此创建一个函数。
    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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接