2014-07-24 93 views
2

这里是字符串实际数据如何通过匹配键从字符串中获取值?

25459178 for: MARIA PETRUZZELLA on: 2014-05-27 

我使用考虑它作为

[TransactionNumber] for: [Customer] on: [Date] 

如何获得下列值

TransactionNumber = 25459178 
Customer = MARIA PETRUZZELLA 
Date = 2014-05-27 
+0

看看正则表达式。 – john

+0

我已经学习过,但我不是RE的专家。 –

+0

为你增加了一个例子:) – john

回答

9

String.Split

var input = "25459178 for: MARIA PETRUZZELLA on: 2014-05-27"; 
var values = input.Split(new[] { "for:", "on:" }, StringSplitOptions.RemoveEmptyEntries); 
var TransactionNumber = values[0]; 
var Customer = values[1]; 
var Date = values[2]; 

注意:您可以对每个值使用Trim来删除前导空白和尾随空白。

+2

很棒的建议。这很好,很干净,而且很重要。通常第一个反应可能是使用子字符串,因为您可以获得所有空格的索引,并知道变量的顺序,但是这会跳过所有那些索引可能导致的困难逻辑和麻烦。 – AdamMc331

2

像这样的东西可以工作,但你必须确保你涵盖所有基地的客户名称的条款,并且数据的格式是不会改变的:

string input = "25459178 for: MARIA PETRUZZELLA on: 2014-05-27"; 
System.Text.RegularExpressions.Match match = System.Text.RegularExpressions.Regex.Match(input, @"(?<Transaction>[0-9]+)\s+for:\s+(?<Customer>[a-zA-Z\- ]+)\s+on:\s+(?<Date>[0-9]{4}-[0-9]{2}-[0-9]{2})"); 
string transaction = match.Groups["Transaction"].Value; 
string customer = match.Groups["Customer"].Value; 
string date = match.Groups["Date"].Value; 
DateTime dateObject; 
DateTime.TryParse(date, out dateObject); 

在你的情况,为了简单起见,我可能会选择Selman22的答案。

+0

完美的解决方案 –

相关问题