Asp.net 如何从字符串输入中提取数据并保存到datatable中
我想从字符串输入中获取一些数据,如乘客姓名、基本票价、总票价、佣金、fop。所有这些字段,我在下图中显示。所有这些字段,我想存储在数据表中。列名为:-乘客姓名、基本票价、总票价、佣金、fop 这是我的字符串输入:-Asp.net 如何从字符串输入中提取数据并保存到datatable中,asp.net,regex,string,c#-4.0,Asp.net,Regex,String,C# 4.0,我想从字符串输入中获取一些数据,如乘客姓名、基本票价、总票价、佣金、fop。所有这些字段,我在下图中显示。所有这些字段,我想存储在数据表中。列名为:-乘客姓名、基本票价、总票价、佣金、fop 这是我的字符串输入:- string request= @"TST00009 DCA1S211E RH/07FEB F N LD 13FEB13 OD SANSAN SI T-E
string request= @"TST00009 DCA1S211E RH/07FEB F N LD 13FEB13 OD SANSAN SI
T-E
FXP/R,U
3.MACDORMAN/SAM CORBIN (CHD)
1 SAN BA 272 N 24JUN 825P OK NHXUQCNJ CH 24JUN24JUN 1PC
2 O LHR BA 273 N 07AUG 325P OK NHXUQCNJ CH 07AUG07AUG 1PC
SAN
FARE U USD 492.00
TX001 X USD 458.00YQAC TX002 X USD 5.50YCAE TX003 X USD 17.20USAP
TX004 X USD 17.20USAS TX005 X USD 5.00XACO TX006 X USD 7.00XYCR
TX007 X USD 2.50AYSE TX008 X USD 105.61GBAD TX009 X USD 62.66UBAS
TX010 X USD 4.50XF
TOTAL USD 1177.17
GRAND TOTAL USD 1177.17
SAN BA LON M/BT NHXUQCNJ/CH BA SAN M/BT NHXUQCNJ/CH END
ROE1.000000 XF SAN4.5
BT1195364*BA *FM0.00
40.FE BA ONLY/NONREF/NONEND SEE GGAIRBAGUSA -BG:BA
45.FM *M*0.00A
46.FP CHECK";
您似乎应该学习更多关于基本正则表达式的知识。
是我最喜欢的资源之一。尽管如此,希望这是一个有益的开始
单独抓住每一个片段可能比抓住一个表达式更干净。大概是这样的:
Match m1 = Regex.Match(request, @"FXP/R,U\s+(.+?) \(CHD\)", RegexOptions.Singleline);
string name = m1.Groups[1].Value;
Match m2 = Regex.Match(request, @"FARE U USD\s+(\d+\.\d{2})");
string fare = m2.Groups[1].Value;
Match m3 = Regex.Match(request, @"GRAND TOTAL USD\s+(\d+\.\d{2})");
string total = m3.Groups[1].Value;
Match m4 = Regex.Match(request, @"45\.FM (\S+)");
string commission = m4.Groups[1].Value;
Match m5 = Regex.Match(request, @"46\.FP (\S+)");
string fop = m5.Groups[1].Value;
如果你真的想,你可能会设法在一个,但它的一种混乱的外观:
string pattern = @"FXP/R,U\s+(?<name>.+?) \(CHD\).*FARE U USD\s+(?<fare>\d+\.\d{2}).*GRAND TOTAL USD\s+(?<total>\d+\.\d{2}).*45\.FM (?<commission>\S+).*46\.FP (?<FOP>\S+)";
Match m = Regex.Match(request, pattern, RegexOptions.Singleline);
Console.WriteLine("Name: {0}", m.Groups["name"]);
Console.WriteLine("Fare: {0}", m.Groups["fare"]);
Console.WriteLine("Total: {0}", m.Groups["total"]);
Console.WriteLine("Commission: {0}", m.Groups["commission"]);
Console.WriteLine("FOP: {0}", m.Groups["FOP"]);
string pattern=@“FXP/R,U\s+(?。+)\(CHD\).*票价U USD\s+(?\d+).\d{2}.*总计USD\s+(?\d+).\d{2}.*45\.FM(?\s+).*46\.FP(?\s+);
Match m=Regex.Match(请求、模式、RegexOptions.Singleline);
Console.WriteLine(“Name:{0}”,m.Groups[“Name”]);
Console.WriteLine(“票价:{0}”,m.Groups[“票价”]);
Console.WriteLine(“Total:{0}”,m.Groups[“Total”]);
Console.WriteLine(“Commission:{0}”,m.Groups[“Commission”]);
Console.WriteLine(“FOP:{0}”,m.Groups[“FOP”]);
这方面的工作示例:
您可能需要稍微调整这些模式。它们适用于给定的示例,但我对它们如何匹配做了一些假设(例如,它假设“佣金”和“FOP”不包含空格)。希望这能有所帮助。实际上我正在申请航班可用性,所以我得到了这种类型的输入。为了方便客户,我想在网格视图中显示此输入。我在图像中显示了我想要的所有必要字段。所以,您想查找“FXP/R,U”、“票价U美元”、“总计美元”、“45.FM”和“46.FP”之后的值吗?你能简单地搜索一下吗?是的,在这方面你能帮我吗。