2017-02-14 4 views
2

Я пытаюсь вытащить BookingID изнутри электронной почты.Как получить переменную изнутри строки

Письмо всегда будет содержать текст ниже, но BookingID всегда будет отличаться.

WEB БРОНИРОВАНИЕ ID номер: 12345678

Я попытался ниже, но это только дает мне BookingID + остальное по электронной почте после него.

string search = "WEB BOOKING ID NUMBER: "; 
string bookingID = myItem.Body.Text.Substring(myItem.Body.Text.IndexOf(search) + search.Length); 

Обратите внимание, что BookingID всегда будет такой же длины (8 символов).

Я был бы очень признателен за помощь в этом.

+0

Использование строки разделение: строка входного = «интернет БРОНИРОВАНИЕ ID NUMBER: 12345678 "; string output = input.Split (новый char [] {':'}). Пропустить (1) .FirstOrDefault(). Trim(); – jdweng

ответ

5

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

var search = @"WEB BOOKING ID NUMBER:\s*([0-9]+)"; 
var match = Regex.Match(myItem.Body.Text, search); 
var res = string.Empty; 
if (match.Success) 
{ 
    res = match.Groups[1].Value; 
} 

WEB BOOKING ID NUMBER:\s*([0-9]+) модели найдет WEB BOOKING ID NUMBER: текста следует с 0+ пробельных символами (\s*) и захватит в 1-е группы один или более цифр (([0-9]+)).

Смотрите regex demo here:

enter image description here

+1

См. [Онлайн-демонстрацию C#] (https://ideone.com/VwpfD8). –

2

Используйте second argument к функции Substring, чтобы ограничить длину извлеченной части:

const string search = "WEB BOOKING ID NUMBER: "; 
var bookingID = myItem.Body.Text.Substring(myItem.Body.Text.IndexOf(search) + search.Length, 8); 
Смежные вопросы