2016-12-06 14 views
0

我將所有文本行格式化爲列。問題是,我不知道如何讓每一行都分成單詞,從文本的第一行開始,所有的列將被一個空格隔開。感謝任何幫助。到目前爲止我的代碼:c#格式行到列

using (StreamWriter writer = new StreamWriter(fvr)) 
{ 

    string[] lines = File.ReadAllLines(fv, Encoding.GetEncoding(1257)); 

    foreach (string line in lines) 
    { 
     var words = line.Split(skyrikliai2, StringSplitOptions.RemoveEmptyEntries); 
     for (int i = 0; i < words.Length; i++) 
      writer.WriteLine(words[i]); 
     writer.WriteLine("\n"); 
    } 
} 

這樣做的結果將是(無符號):

什麼我需要的是,這條線將被用文字分割,並且該線的每一個字都會被分開寫成新的一行,並且所有的下一行將以相同的方式寫(如果它更容易想象爲矩陣,那麼我的意思是格式化所有列)。像這樣:

  • 字字字
  • 字字字
  • 字字字
  • 字字字

EDIT3。這就是我所要的輸出看:

enter image description here

+0

請問您能否提供一個初始數據的例子*和期望的結果*? –

+0

編輯我的問題;) – Oscar

+0

如果我們有*不同*字怎麼辦?例如。 'a1 a2 \ r \ n b1 \ r \ n c1 c2 c3'? –

回答

1

哎,終於...你想線,例如爲測試輸入

a1, a2, a3 
b1 
c1; c2 

預期的輸出應該

a1 b1 c1 
a2 c2 
a3 

您可以實現Pivot如下

private static List<List<String>> Pivot(String[][] source) { 
    var numRows = source.Max(a => a.Length); 
    var numCols = source[0].Length; 

    var result = new List<List<String>>(numRows); 

    for (int row = 0; row < numRows; ++row) { 
    List<String> line = Enumerable.Repeat("", numCols).ToList(); 

    result.Add(line); 

    for (int col = 0; col < numCols; ++col) 
     if (source[col].Length > row) 
     line[col] = source[col][row]; 
    } 

    return result; 
} 

並使用string.Join獲得

var result = Pivot(File 
    .ReadLines(@"C:\MyFile.txt", Encoding.GetEncoding(1257)) 
    .Select(line => line.Split(skyrikliai2, StringSplitOptions.RemoveEmptyEntries)) 
    .ToArray()); 

File.WriteAllLines(
    @"C:\OtherFile.txt", 
    result 
    .line => string.Join("\t", line), 
    Encoding.GetEncoding(1257)); 
+0

梅德Bychenko,SRY基因,但它只是沒有在我的情況下工作,我不能用在foreach循環或不應該我使用這個選項? – Oscar

+0

@Oscar:用'foreach'迴路同樣的想法:'Join'的話,而不是'*心底foreach' –

+0

梅德謝謝你的努力,但是這是我不斷收到問題。所有的所有行的話,他們是在同一列中。我需要每行的話將是分隔的列 – Oscar

0

我想你想寫一行中的每一個字。 使用Environment.NewLine,而不是這種格式 '\ n'

0

我會使用的string.join,你可能使用LINQ合計過。

using (StreamWriter writer = new StreamWriter(fvr)) 
    { 
     string[] lines = File.ReadAllLines(fv,Encoding.GetEncoding(1257)); 
     foreach (string line in lines) 
     { 
      var words = line.Split(skyrikliai2, StringSplitOptions.RemoveEmptyEntries); 
      var outputLine = string.Join(Environment.NewLine, words); 

      writer.WriteLine(outputLine); 
     } 
    } 
+0

它仍然打印出所有的詞在一列中,我需要打印出每一行中新列,並通過空格分開,我真的很感謝你的努力 – Oscar

+0

也許你想轉動?由樞 –

+0

我的意思是爲每一個字一個換行符?字1。 WORD2。 WORD3。 –