如何通过匹配键从字符串中获取值?

时间:2014-07-24 18:28:13

标签: c# string

这是字符串

中的真实数据
25459178 for: MARIA PETRUZZELLA on:  2014-05-27

我正在考虑将其作为

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

如何获取以下值

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

2 个答案:

答案 0 :(得分: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来删除前导和尾随空格。

答案 1 :(得分: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的答案。