Как я могу получить эти значения из строки? - PullRequest
2 голосов
/ 30 октября 2010

Веб-сервис возвращает следующую строку

"ID: xxxx Статус: гггг"

Как получить значение идентификатора значения без текста «ID:» и значение «Состояние» без текста «Status:».

Значение идентификатора должно быть хххх Значение состояния должно быть гггг

длина значения неизвестна.

Ответы [ 2 ]

8 голосов
/ 30 октября 2010

Один способ был бы с регулярным выражением.

Это имеет преимущество «естественной» проверки того, что строка, возвращаемая веб-службой, соответствует вашему ожидаемому формату, что позволяет вам легко справляться с некорректным вводом.

Например:

Regex regex = new Regex(@"^ID:\s*(.+)\s*Status:\s*(.+)$");
Match match = regex.Match(input);

// If the input doesn't match the expected format..
if (!match.Success)
    throw new ArgumentException("...");

string id = match.Groups[1].Value; // Group 0 is the whole match
string status = match.Groups[2].Value;

^         Start of string
ID:       Verbatim text
\s*       0 or more whitespaces
(.+)      'ID' group (you can use a named group if you like)
\s*       0 or more whitespaces
Status:   Verbatim text
\s*       0 or more whitespaces
(.+)      'Status' group
$         End of string

Если вы можете уточнить, какими могут быть xxxx и yyyy (буквы, цифры и т. Д.), Мы можемвозможность обеспечить более надежное регулярное выражение.

2 голосов
/ 30 октября 2010

Используйте что-то вроде этого:

string s = "ID: xxxx Status: yyyy";
string[] words = s.Split(' ');
string id = s[1];
string status = s[3];

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...