【发布时间】:2015-06-27 23:58:40
【问题描述】:
我正在阅读一个巨大的、机器生成的、制表符分隔的文本文件。我在下面制作了以下代码来获取值,但这仅在文本文件以制表符分隔的方式时才有效,并且事实证明 外部软件 在每个之间使用随机数量的空格字段。
如何生成将随机空格分隔的文本文件读入制表符分隔文件的代码。我目前的解决方法是在 Microsoft Excel 中打开文件并重新另存为制表符分隔文件。但这将无法正常工作,因为 Excel 无法正确识别随机数量的空格分隔符。以下是我为读取行列格式的制表符分隔的文本文件所做的代码,但我需要帮助来解决我机器生成的文件的问题。
string filename = @"D:\EMS_DATA\firstfile.txt";
string[] lines = File.ReadAllLines(filename)
.Where(arg => !string.IsNullOrWhiteSpace(arg)).ToArray();
string[] cols = lines[0].Trim()
.Split(new[] {'\t'}, StringSplitOptions.RemoveEmptyEntries);
int linesss = 1;
foreach (string line in lines.Skip(1))
{
string[] cells = line.Trim()
.Split(new[] {'\t'}, StringSplitOptions.RemoveEmptyEntries);
for (int counter = 0; counter < cols.Length; counter++)
{
string cellValue = "N/A";
if(counter < cells.Length)
cellValue = cells[counter];
Console.WriteLine(
"values at row {0} column {1} are {2} : {3}",
line,
counter,
cols[counter],
cellValue);
}
linesss++;
}
文本文件格式为
firstname lastname salary age
sasi kiran 88000 32
ravi kiran 92000 23
jafer sharif 34000 45
kiran bedi 45000 34
更新: 生成的文本文件格式不正确。我目前的解决方法是在 Microsoft Excel 中打开文件,然后将其再次保存为制表符分隔的文件。我需要可以自动为我执行此操作的代码方面的帮助。
【问题讨论】:
-
您必须准确解释这个“列行格式”文件的格式是什么,例如举个例子
-
使用 .NET TextFieldParser 类。你喜欢它的 TextFieldType 设置为 FixedWidth 和它的 FieldWidths 属性。
-
@Marc B 我更新了我的问题
-
@Hans Passant 能否提供 TextFieldParser 类的代码
-
为什么不直接使用 Regex.Match() 和模式“(\\w+)|(\\d+)”?