C# 如何使用动态分隔符解析文本文件

C# 如何使用动态分隔符解析文本文件,c#,parsing,C#,Parsing,文本文件的格式(为清晰起见,空格替换为点): 需要将此文件解析为锯齿状数组,如下所示: { {"1", "2", "23", "a", "5"}, {"3", "", "4", "bc", "35"} } 有人知道怎么做吗 更新: 最小空白数为3。 行项目可以有不同的宽度 ae18...1,1234....5,567.....-2,5 ae140....1,12...0,5673.....-2,3 aw1.............0,3573...-1,545 使用正则表达式

文本文件的格式(为清晰起见,空格替换为点):

需要将此文件解析为锯齿状数组,如下所示:

{
    {"1", "2", "23", "a", "5"},
    {"3", "", "4", "bc", "35"}
}
有人知道怎么做吗

更新:

最小空白数为3。
行项目可以有不同的宽度

ae18...1,1234....5,567.....-2,5
ae140....1,12...0,5673.....-2,3
aw1.............0,3573...-1,545

使用正则表达式来标识字母数字表达式。

使用正则表达式来标识字母数字表达式。

看看您的示例,您的输入文本文件似乎使用了一种或平面文件格式。如果是这样,将文件解析为多维数组的一个简单策略是读取文件的每一行,每一行获得不同的固定列,然后删除前导空格

# Read next line from file
String line = readNextLineFromYourFile();
# Store the parsed line in a list of strings
List<String> parsedLine = new List<String>();
# Extract fixed width parts of the line, trim away whitespace and store in parsed line
parsedLine.Add(line.Substring(0,1).Trim());
parsedLine.Add(line.Substring(1,5).Trim());
parsedLine.Add(line.Substring(1,5).Trim());
# Store parsed line in the result
result.Add(parsedLine);
#从文件中读取下一行
String line=readnextline fromYourFile();
#将解析后的行存储在字符串列表中
List parsedLine=新列表();
#提取行的固定宽度部分,删除空白并存储在解析后的行中
parsedLine.Add(line.Substring(0,1.Trim());
Add(line.Substring(1,5.Trim());
Add(line.Substring(1,5.Trim());
#将解析后的行存储在结果中
结果.添加(解析行);

看看您的示例,您的输入文本文件似乎使用了一种或平面文件格式。如果是这样,将文件解析为多维数组的一个简单策略是读取文件的每一行,每一行获得不同的固定列,然后删除前导空格

# Read next line from file
String line = readNextLineFromYourFile();
# Store the parsed line in a list of strings
List<String> parsedLine = new List<String>();
# Extract fixed width parts of the line, trim away whitespace and store in parsed line
parsedLine.Add(line.Substring(0,1).Trim());
parsedLine.Add(line.Substring(1,5).Trim());
parsedLine.Add(line.Substring(1,5).Trim());
# Store parsed line in the result
result.Add(parsedLine);
#从文件中读取下一行
String line=readnextline fromYourFile();
#将解析后的行存储在字符串列表中
List parsedLine=新列表();
#提取行的固定宽度部分,删除空白并存储在解析后的行中
parsedLine.Add(line.Substring(0,1.Trim());
Add(line.Substring(1,5.Trim());
Add(line.Substring(1,5.Trim());
#将解析后的行存储在结果中
结果.添加(解析行);

将FileHelpers引擎用于固定分隔的

将FileHelpers引擎用于固定分隔的

此帖子还有一个选项:此帖子还有一个选项:规范非常不完整。字段宽度是多少,字段是否可以完全填充(例如,中间有0个空格),…@Henkholtman,谢谢,我已经改进了描述仍然没有能够检测空字段的信息/规则。你们有固定的字段宽度,还是需要代码来找出它们?@HenkHolterman,我需要代码来找出每一列的宽度。这是一个很好的问题。Excel可以做到这一点,所以您也应该能够做到。非常不完整的规范。字段宽度是多少,字段是否可以完全填充(例如,中间有0个空格),…@Henkholtman,谢谢,我已经改进了描述仍然没有能够检测空字段的信息/规则。你们有固定的字段宽度,还是需要代码来找出它们?@HenkHolterman,我需要代码来找出每一列的宽度。这是一个很好的问题。Excel可以做到这一点,所以您也应该能够做到。然后,您可以获取匹配的部分并构建阵列。然后,您可以获取匹配的部分并构建阵列。