2010-01-08 5 views
6

У меня есть строковое значение, которое мне нужно получить из среднего бита, например. «Отменить плательщика»/«Новый безбумажный».Split String Value C#

Это пример формата строки:

"REF_SPHCPHJ0000057_Cancel Payer_20100105174151.pdf"
"REF_SPHCPHJ0000056_New Paperless_20100105174151.pdf"

+4

Мне кажется, что это 3-й элемент ([2]) операции разделения? Какая у вас проблема с вызовом '.Split ('_') [2]'? –

ответ

16
string s = "REF_SPHCPHJ0000057_Cancel Payer_20100105174151.pdf"; 
string middleBit = s.Split('_')[2]; 
Console.WriteLine(middleBit); 

Выход

Cancel Payer 
+6

+1 Ну, регулярное выражение, безусловно, мощное, но когда хороший старый раскол делает трюк ... –

5

Разве это не место для регулярных выражений?

Regex re = new Regex(@".*_(?<middle>\w+ \w+)_.*?"); 
string name = "REF_SPHCPHJ0000057_Cancel Payer_20100105174151.pdf"; 
string middle = re.Match(name).Groups["middle"].Value; 
+4

Кажется, это немного перебор, чтобы просто разбить строку. –

+0

Я уважаю ваше мнение; ty для вашего комментария –

0

Я думаю, что это регулярное выражение:

Regex re = new Regex(@"\w+_\w+_(?<searched>.*)_\d*.pdf"); 

будет соответствовать вашим потребностям, если PDF файлы всегда приходят к вам как

REF_<text>_<your text here>_<some date + id maybe>.pdf 
0

Не могу написать комментарии еще ... но должен сказать, что решение Jasons не будет работать правильно, если в «среднем бите» будет символ подчеркивания. Он вернет только часть перед подчеркиванием.