【问题标题】:Split string after certain character count在特定字符数后拆分字符串
【发布时间】:2015-06-26 19:23:58
【问题描述】:

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

示例(这是我当前的输出,全部为直线)

STACKTRACE:

at stacktraceabcdefghijklmnopqrstuvwxyztacktraceabcdefghijklmnopqrswxyztacktraceabcdefghijk

**MY DESIRED OUTPUT(字符串将在特定字符数后写入下一行)

STACKTRACE:

at stacktraceabcdefghijklmno    
pqrstuvwxyztacktraceabcdefgh    
ijklmnopqrswxyztacktraceabcd    
efghijk

我的代码

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

【问题讨论】:

  • This 应该会有所帮助。

标签: c# asp.net regex string stringbuilder


【解决方案1】:

以下示例每行拆分 10 个字符,您可以随意更改 {N} 其中 N 可以是任意数字。

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

这里是Demo

【讨论】:

  • 您的代码运行良好。我不敢相信这很容易。非常感谢帮助的人! :)
【解决方案2】:

您可以使用以下代码:

string yourstring;

StringBuilder sb = new StringBuilder();

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

【讨论】:

  • 感谢您的代码也有效。但我更喜欢尽量减少代码中的循环。再次感谢您的回答。非常感谢。 :)
【解决方案3】:

你可以为此创建一个函数

    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;
}

【讨论】:

    【解决方案4】:

    最佳、最简单和通用的答案:)。只需将 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))));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-05
      • 2015-12-18
      • 2020-11-08
      • 1970-01-01
      • 2018-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多