我正在将所有文本行格式化为列。问题是,我不知道如何做到这一点,以便我分成单词的每一行都从文本中的第一行开始,并且所有列都用一个空格分隔。感谢任何帮助。到目前为止我的代码:
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。这就是我希望输出的样子:
呃,最后......你想要旋转线,例如用于测试输入
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));
我想你想把每个单词写在一行中。 对于这种格式,使用 Environment.NewLine 而不是 ' '
我会使用 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);
}
}