我需要以下列格式解析第三方文本文件
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个字符开始
答案 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());
}
试试这个,看看它是否适合你。如果没有告诉我更多信息来更新它。希望它会有用。