Вопрос по asp.net, string, stringbuilder, regex, c# – Разделить строку после определенного количества символов

3

Мне нужна помощь. Я'Я пишу журнал ошибок, используя текстовый файл с подробной информацией об исключениях. При этом я хочу, чтобы мои данные трассировки стека были написаны, как показано ниже, а не по прямой линии, чтобы пользователь не мог прокрутить полосу прокрутки блокнота или позволитьскажем, на 100-м символе строки будут записаны на следующей строке. Я нене знаю, как этого добиться. Заранее спасибо.

ОБРАЗЕЦ (ЭТО МОЙ ТЕКУЩИЙ ВЫХОД ВСЕ В ПРЯМОЙ ЛИНИИ) *

STACKTRACE:

at stacktraceabcdefghijklmnopqrstuvwxyztacktraceabcdefghijklmnopqrswxyztacktraceabcdefghijk

* МОЙ ЖЕЛАННЫЙ ВЫХОД (строка будет записывать следующую строку после определенного количества символов)

STACKTRACE:

at stacktraceabcdefghijklmno    
pqrstuvwxyztacktraceabcdefgh    
ijklmnopqrswxyztacktraceabcd    
efghijk

МОЙ КОД

builder.Append(String.Format("STACKTRACE:"));
            builder.AppendLine();
            builder.Append(logDetails.StackTrace);  
это должно помочь user2771704

Ваш Ответ

4   ответа
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;
}
9

Следующий пример разбивает 10 символов на строку, вы можете изменить, как вам нравится{N} где N может быть любым числом.

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

Здесьдемонстрация

@jbaDaniel You 'добро пожаловать Sriram Sakthivel
ваш код работает нормально Я могу'не верю в этоЭто так просто. Большое спасибо за помощь, человек! :) Moccassin
1

Лучший, самый простой и общий ответ :). Просто установите значение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))));
}
1

Вы можете использовать следующий код:

string yourstring;

StringBuilder sb = new StringBuilder();

for(int i=0;i
Спасибо, ваш код тоже работает. Но я предпочитаю минимизировать циклы в моем коде. Еще раз спасибо за ваш ответ. Очень ценится. :) Moccassin

Похожие вопросы