c# 格式化行到列

问题描述 投票:0回答:3

我正在将所有文本行格式化为列。问题是,我不知道如何做到这一点,以便我分成单词的每一行都从文本中的第一行开始,并且所有列都用一个空格分隔。感谢任何帮助。到目前为止我的代码:

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

结果将是(无符号):

我需要的是,该行将被分成单词,该行的每个单词将被写入新行,并且所有下一行将以相同的方式写入(我的意思是格式化列中的所有内容),如果它更容易想象成一个矩阵。像这样:

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

编辑3。这就是我希望输出的样子:

enter image description here

c# formatting
3个回答
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
投票

我想你想把每个单词写在一行中。 对于这种格式,使用 Environment.NewLine 而不是 ' '


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);
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.