Как извлечь строку из строки в C # - PullRequest
2 голосов
/ 23 апреля 2009

У меня есть следующая строка:

FirstName = John & LastName = Доу и город = Лондон и ConfirmationId = WXASL320330

Я хочу извлечь из него идентификатор подтверждения. Я сделал разделение на нем и передал символ &, но это возвращает ConfirmationId = WXASL320330, а я просто WXASL320330. Каков наилучший способ сделать это?

Строка фактически является частью свойства с именем RawProcessorResult, которое возвращает PayPal.

Ответы [ 14 ]

21 голосов
/ 23 апреля 2009

Самый простой способ - использовать встроенный метод HttpUtility.ParseQueryString():

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

string confirmationID = 
  System.Web.HttpUtility.ParseQueryString(queryString)["ConfirmationId"]; 
  // returns "WXASL320330"
7 голосов
/ 23 апреля 2009

Используйте регулярное выражение:

new Regex (@ "ConfimationId = (\ w +)")

7 голосов
/ 23 апреля 2009

Еще одно деление на '='

3 голосов
/ 23 апреля 2009

Вы можете использовать Регулярные выражения, чтобы добраться туда.

Кроме того, вы можете просто разделить текущий результат на = и принять второй аргумент.

string temp = "ConfirmationId=WXASL320330";
string[] portions = temp.Split("=");
string answer = portions[1];
2 голосов
/ 23 апреля 2009

Я предлагаю использовать регулярное выражение.

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

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

Если идентификатор подтверждения имеет большую структуру - например, всегда 5 букв и 6 цифр - вы должны включить эту информацию в выражение.

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

Если точная структура неизвестна или может измениться, просто передайте все до следующего амперсанда.

@"ConfirmationId=(?<Id>[^&]+)"
2 голосов
/ 23 апреля 2009

Я бы использовал регулярное выражение. например: ConfirmationId = (\ ш {11})

1 голос
/ 23 апреля 2009
string confirmationId = Regex.Match(input, @"(?<=ConfirmationId=)[^&]*").Value;
1 голос
/ 23 апреля 2009

У вас есть три основных способа сделать это.

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("="));
Regex
var pattern = new Regex("[^=]+=(?<value>.*)");
var match = pattern.Match(parts[3]);
var confirmationId = match.Groups["value"].Value;
1 голос
/ 23 апреля 2009

Это зависит. Если это часть вашего URL в приложении asp.net, то вам просто нужно Request["Confirmationid"]. Если это что-то еще, используйте регулярное выражение:

ConfirmationId = {[^ &] *} * +1005 *

1 голос
/ 23 апреля 2009
input.Split('&').Select(x => x.Split('=')).Single(x => x[0].Equals("ConfirmationId"))[1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...