2013-09-20 3 views
0

Это Ват я попытался с помощью разделениястрока Раскол в LINQ

string[] req_info_texts = Regex.Matches(model_file_string_qts_corrected, 
              "RequirementInfo.*\"") 
           .OfType<Match>() 
           .Select(m=> m.Groups[0].Value.Split('\'').ToString()) 
           .ToArray(); 

RequirementInfo.*\" линии в строке "model_file_string_qts_corrected" аналогична

RequirementInfo "{'1' 2' 3'4 '5' 6'7' 8'syed_syed' 'SRDD_PFC_047602' } %GIDa_033022bd_8058_4216_8b9d_71454ba5f896" 

Там не было п нет линий, как выше в строке.

Мне нужно syed_syed в массиве req_info_texts. Но wat я получаю исключение индекса вне диапазона.

Можете ли вы сказать, что ошибка?

+4

'm.Groups [0] .Value.Split ('\' '). ToString()', поэтому string []. ToString, это имеет смысл? –

+0

Я новичок в том, чтобы сделать резкие исправления вышеуказанных строк кода, если они были неправы. Мне нужен ожидаемый результат – user2799127

+0

@ user2799127, где бы 'syed_syed' быть..может ли он быть в 8-м' '' ?? – Anirudha

ответ

0
string[] req_info_texts = Regex.Matches(input,@"RequirementInfo.*\"") 
           .Cast<Match>() 
           .Select(m=> m.Value 
              .Split(''') 
              .Where(x=>x.Contains("syed_syed")) 
              .Single() 
            ).ToArray(); 
+0

Это все еще дает индекс из исключения диапазона – user2799127

+0

@ user2799127 Покажите нам точное содержание 'model_file_string_qts_corrected' в вопросе – Anirudha

+0

RequirementInfo \t«{ „другой“ „“ „“ „истинный“ klajdskfjadklsjfklsa „syed_syed_GRP001“ „“}% GIDa_ed66dae7_2d68_4d07_9c67_a1cf1cb614cc» RequirementInfo \t "{ 'другой' '' '' 'истинный' klajdskfjadklsjfklsa 'syed_syed_GRP001' ''}% GIDa_b9a766f9_2b2b_4ca8_98f4_f693055b4792" RequirementInfo \t "{ 'другой' '' '' 'истинный' 'syed_syed_GRP004' 'klajdskfjadklsjfklsa'}% GIDa_271d5326_cb57_4d87_8cd9_66687c0a1d32" RequirementInfo \t «{'other' '' '' 'true' 'syed_syed_GRP03' 'klajdskfjadklsjfklsa'}% GIDa_07ed6119_91d2_41f9_94dc_69d518503d64" – user2799127

0

Учитывая ваш входной строки

RequirementInfo "{ 'другой' '' '' 'истинный' klajdskfjadklsjfklsa 'syed_syed_GRP001' ''}% GIDa_ed66dae7_2d68_4d07_9c67_a1cf1cb614cc" RequirementInfo «{ 'другой' '' ' ' 'истинный' 'syed_syed_GRP001' 'klajdskfjadklsjfklsa'}% GIDa_b9a766f9_2b2b_4ca8_98f4_f693055b4792" RequirementInfo "{ 'другой' '' '' 'истинный' klajdskfjadklsjfklsa 'syed_syed_GRP004' ''}% GIDa_271d5326_cb57_4d87_8cd9_66687c0a1d32" RequirementInfo «{ 'другой' '' '' 'истинный' 'syed_syed_GRP03' 'klajdskfjadklsjfklsa'}% GIDa_07ed6119_91d2_41f9_94dc_69d518503d64 "

только с новой строки, как вы сказали, в комментарии на другой вопрос, вам просто нужно два расколы:

var infosString = "RequirementInfo \"{'other' ' ' '' 'true' 'syed_syed_GRP001' 'klajdskfjadklsjfklsa' } %GIDa_ed66dae7_2d68_4d07_9c67_a1cf1cb614cc\"\nRequirementInfo \"{'other' ' ' '' 'true' 'syed_syed_GRP001' 'klajdskfjadklsjfklsa' } %GIDa_b9a766f9_2b2b_4ca8_98f4_f693055b4792\"\n RequirementInfo  \"{'other' ' ' '' 'true' 'syed_syed_GRP004' 'klajdskfjadklsjfklsa' } %GIDa_271d5326_cb57_4d87_8cd9_66687c0a1d32\"\n RequirementInfo  \"{'other' ' ' '' 'true' 'syed_syed_GRP03' 'klajdskfjadklsjfklsa' } %GIDa_07ed6119_91d2_41f9_94dc_69d518503d64"; 
var result = infosString.Split('\n').Select(line => line.Split('\'')[9]).ToArray(); 

результат теперь

enter image description here

Первый Split создает массив с строки, начинающиеся с RequirementInfo, и Select снова разделяет эти строки и занимает 10 предметов (те, которые начинаются с syed_syed).

Смежные вопросы