我需要解析第三方文本文件的格式如下
WE BUY : 10 000.00 USD
VALUE : 281210
RATE : 30.2600
所以,一般的模式是
TAG,一些分离,:,someseparator,VALUE
让我们,说,我开始与File.ReadAllLines
所以我处理的各条线。
什么是解析值的最佳方式是什么?
UPDATE
我没有对任何格式的文件,但让我们说,它是基于位置的。
1)“:”总是在字符串中第9个字符内,2)值是11字符。 3)未使用的空间充满空格字符。
让我们来谈谈该格式。
更新2
我在想,如果正则表达式是更好地在这里? 例如,让我们说我有一个子任务找到
RATE : 30.2600
在整个文本,并提取30.2600因为是始于11字符
对于每一行:
string[] parts = line.Split(':');
// assert parts.Length == 2
string tag = parts[0].Trim();
string[] values = parts[1].Split(' ', SplitOptions.NoDupes); // or ','
对于从文件中读取数据的分析,可以考虑使用正则表达式。 在这种情况下,你必须要警惕,虽然为分隔符,即确保分隔符(:在我们的情况下)未在标签或值的部分无意中发现。
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());
}
试试这个,看看它是否适合你。 如果不告诉我的详细信息进行更新。 希望这将是有用的。