2013-10-24 24 views
3

我需要一些幫助。我正在使用具有異常詳細信息的文本文件編寫錯誤日誌。我希望我的堆棧跟蹤細節可以像下面這樣寫,而不是直線,以避免用戶滾動記事本的滾動條,或者假設第100個字符將字符串寫入下一行。我不知道如何實現這一點。提前致謝。確定字符數後分割字符串

樣品(這是我目前將所有數據輸出直線)

STACKTRACE: 

at stacktraceabcdefghijklmnopqrstuvwxyztacktraceabcdefghijklmnopqrswxyztacktraceabcdefghijk 

* *我需要的輸出(該字符串將寫入後某些字符數的下一行)

STACKTRACE: 

at stacktraceabcdefghijklmno  
pqrstuvwxyztacktraceabcdefgh  
ijklmnopqrswxyztacktraceabcd  
efghijk 

MY CODE

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

** [This](http://stackoverflow.com/questions/7768373/c-sharp-line-break-every-n-characters)**應該有所幫助。 – user2771704

回答

8

按照實施例拆分每行10個字符,可以改變,只要你喜歡{N}其中N可以是任何數。

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

這裏是Demo

+0

你的代碼工作正常。我不敢相信這很容易。非常感謝幫助的人! :) – Moccassin

+0

@jbaDaniel不客氣 –

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]); 
} 
+0

謝謝你的代碼也可以。但我更願意在我的代碼中最小化循環。再次感謝您的回答。非常感謝。 :) – 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; 
} 
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)))); 
}