如何在c#中从字符串中提取字符串

时间:2009-04-23 17:04:58

标签: c# string

我有以下字符串:

  

姓=约翰&安培;名字= Doe的安培;市=伦敦&安培; ConfirmationId = WXASL320330

我想从中提取确认信息。我已经对它进行了分割并传入了&字符,但这返回ConfirmationId = WXASL320330,我只是WXASL320330。这样做的最佳方式是什么?

该字符串实际上是PayPal返回的名为RawProcessorResult的属性的一部分。

14 个答案:

答案 0 :(得分:21)

最简单的方法是使用内置的HttpUtility.ParseQueryString()方法:

string queryString = "FirstName=John&LastName=Doe&City=London&ConfirmationId=WXASL320330";

string confirmationID = 
  System.Web.HttpUtility.ParseQueryString(queryString)["ConfirmationId"]; 
  // returns "WXASL320330"

答案 1 :(得分:7)

另一个分裂'='

答案 2 :(得分:7)

使用正则表达式:

  

新的正则表达式(@“ConfimationId =(\ w +)”)

答案 3 :(得分:3)

您可以使用正则表达式来实现目标。

或者,您可以将当前结果拆分为=,然后取第二个参数。

string temp = "ConfirmationId=WXASL320330";
string[] portions = temp.Split("=");
string answer = portions[1];

答案 4 :(得分:2)

我会使用正则表达式。 例如:ConfirmationId =(\ W {11})

答案 5 :(得分:2)

我建议使用正则表达式。

String input =
   "FirstName=John&LastName=Doe&City=London&ConfirmationId=WXASL320330";

String confimationId =
   new Regex(@"ConfirmationId=(?<Id>[A-Z0-9]+)(&|$)").
   Match(input).
   Group("Id").
   Value;

如果确认ID具有更多结构 - 例如总共5个字母和6个数字 - 您应该将此信息包含在表达式中。

@"ConfirmationId=(?<Id>[A-Z]{5}[0-9]{6})(&|$)"

如果确切的结构未知或可能发生变化,只需将所有内容都放到下一个&符号中。

@"ConfirmationId=(?<Id>[^&]+)"

答案 6 :(得分:1)

input.Split('&').Select(x => x.Split('=')).Single(x => x[0].Equals("ConfirmationId"))[1]

答案 7 :(得分:1)

这取决于。如果这是你在asp.net应用程序中的网址的一部分,那么你只需要Request["Confirmationid"]。如果它来自其他东西,那么使用常规表达式:

  

ConfirmationId = {[^&安培;] *}

答案 8 :(得分:1)

您有三种主要方法。

var source = "FirstName=John&LastName=Doe&City=London&ConfirmationId=WXASL320330";
var parts = source.Split(new string[] { "&" }, StringSplitOptions.None);
再次拆分
var ids = parts[3].Split(new string[] { "=" }, StringSplitOptions.None);
var confirmationId = ids[1];
使用IndexOf的子字符串
var confirmationId = parts[3].Substring(parts[3].IndexOf("="));
正则表达式
var pattern = new Regex("[^=]+=(?<value>.*)");
var match = pattern.Match(parts[3]);
var confirmationId = match.Groups["value"].Value;

答案 9 :(得分:1)

string confirmationId = Regex.Match(input, @"(?<=ConfirmationId=)[^&]*").Value;

答案 10 :(得分:0)

您可以对该结果进行拆分并获取确认编号。

答案 11 :(得分:0)

您可以执行以下操作:

myString.Split('&')[3].Split('=')[1];

但更好的方法可能是使用RegEx:

new RegEx("ConfirmationId=?*")

答案 12 :(得分:0)

这是URL中的查询字符串吗?你在使用网络项目吗?如果是这样,则有内置的方法来检索值。如果这是您正在做的事情,请告诉我,我会发布代码。

答案 13 :(得分:0)

我认为最好的方法是使用字符串索引。请确保考虑到由于某种原因特定字符串不存在:

string val = "FirstName=John&LastName=Doe&City=London&ConfirmationId=WXASL320330";
string result = string.Empty;
if (val.LastIndexOf("ConfirmationId=")!= -1)
{
    string val2 = val.Substring(val.LastIndexOf("ConfirmationId=") + 15);
    result = (val2.IndexOf('&') != -1) ? val2.Substring(0, val2.IndexOf('&')) : val2;
}