簡體   English   中英

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

[英]How do I extract a string out of a string in c#

我有以下字符串:

名字=約翰&姓= Doe的城市=倫敦和ConfirmationId = WXASL320330

我想從中提取確認信息。 我已經對它進行了拆分並傳入了&字符,但這會返回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];

我會使用正則表達式。 例如:ConfirmationId =(\\ W {11})

我建議使用正則表達式。

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>[^&]+)"
input.Split('&').Select(x => x.Split('=')).Single(x => x[0].Equals("ConfirmationId"))[1]

這取決於。 如果這是你在asp.net應用程序中的網址的一部分,那么你只需要Request["Confirmationid"] 如果它來自其他東西,那么使用常規表達:

ConfirmationId = {[^&] *}

你有三種主要的方法。

var source = "FirstName=John&LastName=Doe&City=London&ConfirmationId=WXASL320330";
var parts = source.Split(new string[] { "&" }, StringSplitOptions.None);
再次拆分
var pattern = new Regex("[^=]+=(?<value>.*)");
var match = pattern.Match(parts[3]);
var confirmationId = match.Groups["value"].Value;
使用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 confirmationId = Regex.Match(input, @"(?<=ConfirmationId=)[^&]*").Value;

您可以對該結果進行拆分並獲取確認編號。

您可以執行以下操作:

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

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

new RegEx("ConfirmationId=?*")

這是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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM