我有一串字符串:
+ HU7142 DS# FA PQ A1 YA BA HQ KA LQ MA QQ CTUPEK 2055 2325 330 0^ > SS LS QS ES VS US DS RS KQ NQ XS ZS OS F22 T1 T3 ** F122 如何把该字符串分割成:
HU7142 
FA 
PQ 
A1 
YA 
BA 
HQ 
KA 
LQ 
MA 
QQ 
2055 2325 
SS 
LS 
QS 
ES 
VS 
US 
DS 
RS 
KQ 
NQ
XS
ZS 
OS 
请问该如何做?
以下是我得到的字符串都要分割
1、 3U8889 DS# FL PL AL YA BA TA WS HA MS GS CTUPEK 1630 1915 321 0 S > SS LS QS ES VS US DS RS KQ NQ XS ZS OS F2L T1 T3 ** F12L  
2、 *ZH4117 DS# FL YL BL ML HL CTUPEK 1700 1935 320 0^L  
3、 CA4117 DS# FL AL OL YL BL ML HL KL LL QL CTUPEK 1700 1935 320 0^D > GL SL XL NS VL TL EL M1L T2 T3 ** M11L  
4、 *ZH4119 DS# F3 YA B1 MS HS CTUPEK 1800 2040 321 0^L  
5、 + CA4119 DS# F3 AS OS YA B1 MS HS KS LS QS CTUPEK 1800 2040 321 0^D > GS SA X5 NS VS TS ES M1S T2 T3 ** M11S b 
6、 3U8889 DS# FL PL AL YA BA TA WS HA MS GS CTUPEK 1630 1915 321 0 S > SS LS QS ES VS US DS RS KQ NQ XS ZS OS F2L T1 T3 ** F12L 

解决方案 »

  1.   

     string str = "+ HU7142 DS# FA PQ A1 YA BA HQ KA LQ MA QQ CTUPEK 2055 2325 330 0^ > SS LS QS ES VS US DS RS KQ NQ XS ZS OS F22 T1 T3 ** F122 ";
                var ary = Regex.Matches(str, @"(?i)(?<=^|[^a-z])[a-z]{2}(\d{4,})?(?=$|[^a-z])|\d{4,}(\s*\d{4,})*").OfType<Match>().Select(t => t.Value).ToArray();
      

  2.   

    你的规则不明确,有一些内容在分割后结果中是没有出现的
    DS#
    CTUPEK 
    320
    0^ >
    OS F22 T1 T3 ** F122
    这些为什么不保留,规则是什么?
      

  3.   


    因为我要的结果是第一行是航班号,2055 2325 这个是起飞时间及降落时间,别的都是该航班可用的座位,就拿+ HU7142 DS# FA PQ A1 YA BA HQ KA LQ MA QQ CTUPEK 2055 2325 330 0^ > SS LS QS ES VS US DS RS KQ NQ XS ZS OS F22 T1 T3 ** F122 这个例子说:HU7142 是航班号,FA PQ A1 YA BA HQ KA LQ MA QQ和 SS LS QS ES VS US DS RS KQ NQ XS ZS OS是该航班的可用座位,CTUPEK 是成都到北京的航班,2055 2325 起降时间,别的数据基本就不考虑了,
    4楼的可以实现,但是得不到有字母+数据的,如A1就分割不出来,A1表示商务仓还有一个座位,希望4楼改进一下,谢谢
      

  4.   

    string str = @"+ HU7142 DS# FA PQ A1 YA BA HQ KA LQ MA QQ CTUPEK 2055 2325 330 0^ > SS LS QS ES VS US DS RS KQ NQ XS ZS OS F22 T1 T3 ** F122 
     ";
                MatchCollection matchs = new Regex("([A-Z0-9]+)").Matches(str);
                List<string> infoList = new List<string>();
                foreach (Match match in matchs)
                {
                    infoList.Add(match.Result("$0"));
                }