这里是字符串实际数据如何通过匹配键从字符串中获取值?
25459178 for: MARIA PETRUZZELLA on: 2014-05-27
我使用考虑它作为
[TransactionNumber] for: [Customer] on: [Date]
如何获得下列值
TransactionNumber = 25459178
Customer = MARIA PETRUZZELLA
Date = 2014-05-27
这里是字符串实际数据如何通过匹配键从字符串中获取值?
25459178 for: MARIA PETRUZZELLA on: 2014-05-27
我使用考虑它作为
[TransactionNumber] for: [Customer] on: [Date]
如何获得下列值
TransactionNumber = 25459178
Customer = MARIA PETRUZZELLA
Date = 2014-05-27
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
来删除前导空白和尾随空白。
很棒的建议。这很好,很干净,而且很重要。通常第一个反应可能是使用子字符串,因为您可以获得所有空格的索引,并知道变量的顺序,但是这会跳过所有那些索引可能导致的困难逻辑和麻烦。 – AdamMc331
像这样的东西可以工作,但你必须确保你涵盖所有基地的客户名称的条款,并且数据的格式是不会改变的:
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的答案。
完美的解决方案 –
看看正则表达式。 – john
我已经学习过,但我不是RE的专家。 –
为你增加了一个例子:) – john