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

C# 如何通过匹配键从字符串中获取值?,c#,string,C#,String,这是字符串中的真实数据 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: MA

这是字符串中的真实数据

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
删除前导和尾随空格。

类似的操作可能会起作用,但您必须确保涵盖客户名称的所有基础,并且数据的格式不会改变:

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);
string input=“25459178 for:MARIA PETRUZZELLA on:2014-05-27”;
System.Text.RegularExpressions.Match Match=System.Text.RegularExpressions.Regex.Match(输入,@“(?[0-9]+)\s+for:\s+(?[a-zA-Z\-]+)\s+on:\s+(?[0-9]{4}-[0-9]{2}-[0-9]{2})”;
字符串事务=匹配。组[“事务”]。值;
字符串customer=match.Groups[“customer”].Value;
字符串日期=匹配。组[“日期”]。值;
DateTime日期对象;
DateTime.TryParse(日期,out-dateObject);

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

看看正则表达式。我已经学习过,但我不是RE方面的专家。我为你添加了一个例子:)很好的建议。它很好,干净,切中要害。通常,第一反应可能是使用子字符串,因为您可以获得所有空间的索引,并知道变量的顺序,但这跳过了索引可能导致的所有困难逻辑和麻烦。