Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 帮助我分析以下文件格式_C#_.net_Parsing_String - Fatal编程技术网

C# 帮助我分析以下文件格式

C# 帮助我分析以下文件格式,c#,.net,parsing,string,C#,.net,Parsing,String,我需要用以下格式解析第三方文本文件 WE BUY : 10 000.00 USD VALUE : 281210 RATE : 30.2600 所以一般的模式是 标记,一些分隔符,:,一些分隔符,值 让;假设我从File.ReadAllLines开始,所以我处理的是单个行 解析值的最佳方法是什么 更新 我没有任何文件的格式,但让我们说,它是基于位置 1) “:”始终是字符串中的第9个字符, 2) 值是第11个字符。 3) 未使用的空格用空格

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

WE BUY  : 10 000.00 USD                      
VALUE   : 281210
RATE    : 30.2600
所以一般的模式是

标记,一些分隔符,:,一些分隔符,值

让;假设我从
File.ReadAllLines
开始,所以我处理的是单个行

解析值的最佳方法是什么

更新

我没有任何文件的格式,但让我们说,它是基于位置

1) “:”始终是字符串中的第9个字符, 2) 值是第11个字符。 3) 未使用的空格用空格字符填充

让我们谈谈这种格式

更新2

我在想RegEx在这里是否更好?例如,假设我有一个子任务 发现

费率: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[]  parts = line.Split(':');
   // assert parts.Length == 2
   string tag = parts[0].Trim();
   string[] values = parts[1].Split(' ', SplitOptions.NoDupes);  // or ','

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


string pattern=“^(?[^:]+):(?。+)$”;
string dataReadFromFile=“我们购买:10000.00美元\r\n价值:281210\r\n日期:30.2600\r\n”;
Regex rx=新的Regex(模式,RegexOptions.Multiline);//多行重要
MatchCollection mc=rx.Matches(dataReadFromFile);
foreach(在mc中匹配m)
{
Console.WriteLine(“{0}->{1}”、m.Groups[“TAG”].Value.Trim()、m.Groups[“Value”].Value.Trim());
}


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

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


string pattern=“^(?[^:]+):(?。+)$”;
string dataReadFromFile=“我们购买:10000.00美元\r\n价值:281210\r\n日期:30.2600\r\n”;
Regex rx=新的Regex(模式,RegexOptions.Multiline);//多行重要
MatchCollection mc=rx.Matches(dataReadFromFile);
foreach(在mc中匹配m)
{
Console.WriteLine(“{0}->{1}”、m.Groups[“TAG”].Value.Trim()、m.Groups[“Value”].Value.Trim());
}


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

leppie,“TAG”、“:”和“VALUE”之间的分隔符(空格)如何?我想您应该从File开始。您的模式与textfile中的条目不匹配?逗号和“某个分隔符”是否总是相同的?PoweRoy,我认为“:”总是第9位,值总是从第11位开始。其余的都是空白。我没有任何文档,但它看起来非常像。如果您确定第11个位置,请尝试以下正则表达式:string pattern=“^(?。{10})(?。+)$”;leppie,关于“TAG”、“:”和“VALUE”之间的分隔符(空格)呢?我想你应该从File开始?逗号和“某个分隔符”是否总是相同的?PoweRoy,我认为“:”总是第9位,值总是从第11位开始。其余的都是空白。我没有任何文档,但它看起来非常像。如果您确定第11个位置,请尝试以下正则表达式:string pattern=“^(?。{10})(?。+)$”;如果改为执行
line.Split(“:”,2)
,则可以删除断言。假设键本身不包含冒号。如果改为
line.Split(“:”,2)
,则可以删除断言。假设键本身不包含冒号。