2013-09-23 78 views
0

我正在寫出一個大字符串(大約100行)到一個文本文件,並希望整個文本塊選項卡。c#標籤包裝字符串

WriteToOutput("\t" + strErrorOutput); 

我上面使用的這行只是標籤文本的第一行。我怎樣才能縮進/選項卡的整個字符串?

回答

0

更換由換行符所有換行符後按Tab:

WriteToOutput("\t" + strErrorOutput.Replace("\n", "\n\t")); 
+0

謝謝......有沒有一種方法可以讓字符串太長而不能放在一行上,也可以選項卡?現在,所有新行都是標籤,但是其中一些較長的行正在環繞而沒有任何縮進 – sammis

+0

請查看此[包裝字符串擴展方法的片段](http://bryan.reynoldslive.com/post/Wrapping -string-data.aspx),它返回一個字符串列表 – jltrem

0

你可以讓你的字符串輸出與CRLF + TAB代替CRLF的副本。並寫入要輸出的字符串(仍以前面的TAB爲前綴)。

strErrorOutput = strErrorOutput.Replace("\r\n", "\r\n\t"); 
WriteToOutput("\t" + strErrorOutput); 
1
File.WriteAllLines(FILEPATH,input.Split(new string[] {"\n","\r"}, StringSplitOptions.None) 
           .Select(x=>"\t"+x)); 
1

要做到這一點,你就必須有一個有限的線路長度(即< 100個字符)在這一點這個問題變得容易。

public string ConvertToBlock(string text, int lineLength) 
{ 
    string output = "\t"; 

    int currentLineLength = 0; 
    for (int index = 0; index < text.Length; index++) 
    { 
     if (currentLineLength < lineLength) 
     { 
      output += text[index]; 
      currentLineLength++; 
     } 
     else 
     { 
      if (index != text.Length - 1) 
      { 
       if (text[index + 1] != ' ') 
       { 
        int reverse = 0; 
        while (text[index - reverse] != ' ') 
        { 
         output.Remove(index - reverse - 1, 1); 
         reverse++; 
        } 
        index -= reverse; 
        output += "\n\t"; 
        currentLineLength = 0; 
       } 
      } 
     } 
    } 
    return output; 
} 

這將任何文本轉換成的文本塊被分成長度lineLength的線和所有開始與標籤並以換行符結束。