我有以下字符串:如何在C#中提取字符串一個字符串的
姓=約翰&姓= Doe的&市=倫敦& ConfirmationId = WXASL320330
我想從中提取confirmationId。我做了一個分割,並通過&字符,但這返回ConfirmationId = WXASL320330,我只是WXASL320330。這樣做的最好方法是什麼?
該字符串實際上是PayPal返回的名爲RawProcessorResult的屬性的一部分。
我有以下字符串:如何在C#中提取字符串一個字符串的
姓=約翰&姓= Doe的&市=倫敦& ConfirmationId = WXASL320330
我想從中提取confirmationId。我做了一個分割,並通過&字符,但這返回ConfirmationId = WXASL320330,我只是WXASL320330。這樣做的最好方法是什麼?
該字符串實際上是PayPal返回的名爲RawProcessorResult的屬性的一部分。
最簡單的方法是使用內置的HttpUtility.ParseQueryString()
方法:
string queryString = "FirstName=John&LastName=Doe&City=London&ConfirmationId=WXASL320330";
string confirmationID =
System.Web.HttpUtility.ParseQueryString(queryString)["ConfirmationId"];
// returns "WXASL320330"
上 '='
使用另一個分裂正則表達式:
新的正則表達式(@ 「ConfimationId =(\ w +)」)
您可以使用正則表達式到達那裏。
或者,您可以將當前結果分割爲=,然後取第二個參數。
string temp = "ConfirmationId=WXASL320330";
string[] portions = temp.Split("=");
string answer = portions[1];
您可以對結果進行拆分並獲取確認號碼。
input.Split('&').Select(x => x.Split('=')).Single(x => x[0].Equals("ConfirmationId"))[1]
我會用一個正則表達式。 例如:ConfirmationId =(\ w {11})
你可以做到以下幾點:
myString.Split('&')[3].Split('=')[1];
但更好的方法很可能是使用正則表達式:
new RegEx("ConfirmationId=?*")
這要看情況。如果這是你的網址在asp.net應用程序的一部分,那麼你只是想Request["Confirmationid"]
。如果它的東西是別的然後使用正規表示法:
ConfirmationId = {[^ &] *}
你必須做這件事的方式主要有三種。
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;
我建議使用正則表達式。
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具有更多結構 - 例如allways 5個字母和6個數字 - 您應該將此信息包含在表達式中。
@"ConfirmationId=(?<Id>[A-Z]{5}[0-9]{6})(&|$)"
如果精確的結構是未知的或可能改變,只是讓一切都交給下一個符號。
@"ConfirmationId=(?<Id>[^&]+)"
string confirmationId = Regex.Match(input, @"(?<=ConfirmationId=)[^&]*").Value;
這將是我的答案,儘管一些解釋可能有助於答案。 – 2009-04-23 17:18:00
這是一個URL查詢字符串?你在使用網絡項目嗎?如果是這樣,那麼就有用於檢索值的方法。讓我知道,如果這是你在做什麼,我會張貼代碼。
我認爲最好的方法是使用該字符串指標做。確保你考慮到,如果由於某種原因,特定的字符串是不是有:
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;
}
更好的可讀性與X [0] .Equals(「ConfirmationId」) – 2009-04-23 17:55:21
笑:)完成! – 2009-04-23 18:22:04