Как я могу получить эти значения из строки?

2

Webservice возвращает следующую строку

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

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

Значение Id должно быть xxxx Значение статуса должно быть yyyy

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

Теги:
string

2 ответа

8
Лучший ответ

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

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

Например:

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 (алфавиты, числа и т.д.), мы могли бы обеспечить более надежное регулярное выражение.

  • 0
    Некоторые люди, столкнувшись с проблемой, думают: «Я знаю, я буду использовать регулярные выражения». Теперь у них есть две проблемы. Просто возиться с вами.
  • 0
    Хаха, хорошо. Я слышал это. В этом случае, я думаю, его использование оправдано, хотя бы для простой проверки.
Показать ещё 5 комментариев
2

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

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

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

  • 0
    Не очень надежное решение. Что если ID или Status содержат пробел?
  • 0
    Это верно. Я предположил, что они были строкой без пробела или числовым значением.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню