LINQ中的字符串拆分

时间:2013-09-20 12:30:10

标签: regex string linq replace split

这是我尝试使用分割

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"

字符串中没有像上面那样的行。

我需要在数组req_info_texts中使用syed_syed。 但我得到的是索引超出范围异常。

你可以说看错了吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

鉴于您的输入字符串是

  

RequirementInfo “{ '其他' '' '' '真' 'syed_syed_GRP001' 'klajdskfjadklsjfklsa'}%GIDa_ed66dae7_2d68_4d07_9c67_a1cf1cb614cc” RequirementInfo “{ '其他' '' '' '真' 'syed_syed_GRP001' 'klajdskfjadklsjfklsa'}%GIDa_b9a766f9_2b2b_4ca8_98f4_f693055b4792” RequirementInfo “{ '其他' '' '' '真' 'syed_syed_GRP004' 'klajdskfjadklsjfklsa'}%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开头的项目)。