帮我解析以下文件格式

时间:2011-01-17 10:19:47

标签: c# .net parsing string

我需要以下列格式解析第三方文本文件

WE BUY  : 10 000.00 USD                      
VALUE   : 281210
RATE    : 30.2600

所以一般模式是

TAG,某些分隔符,:,someseparator,VALUE

让我们说我从File.ReadAllLines开始,所以我正在处理个别行。

解析值的最佳方法是什么?

更新

我没有任何关于格式的文档,但我们说它是基于位置的。

1)“:”始终是字符串中的第9个字符, 2)VALUE是第11个字符。 3)未使用的空间充满了空间特征。

让我们谈谈这种格式。

更新2

我在考虑RegEx在这里是否更好?例如,假设我有一个子任务 找到

RATE : 30.2600

在整个文本中提取30.2600给出的是从第11个字符开始

2 个答案:

答案 0 :(得分:3)

对于每一行:

   string[]  parts = line.Split(':');
   // assert parts.Length == 2
   string tag = parts[0].Trim();
   string[] values = parts[1].Split(' ', SplitOptions.NoDupes);  // or ','

答案 1 :(得分:1)

关于解析从文件读取的数据,请考虑使用正则表达式。在这种情况下,您必须对分隔符保持警惕,即确保在标记或值部分中不会意外地找到分隔符(在我们的例子中)。


            string pattern = "^(?<TAG>[^:]+):(?<VALUE>.+)$";

        string dataReadFromFile = "WE BUY  : 10 000.00 USD\r\nVALUE   : 281210 \r\nRATE    : 30.2600\r\n";

        Regex rx = new Regex(pattern, RegexOptions.Multiline); // Multiline important

        MatchCollection mc = rx.Matches(dataReadFromFile);

        foreach (Match m in mc)
        {
            Console.WriteLine("{0}->{1}", m.Groups["TAG"].Value.Trim(), m.Groups["VALUE"].Value.Trim());
        }

试试这个,看看它是否适合你。如果没有告诉我更多信息来更新它。希望它会有用。