//字符串
string str="01 02 03(10元)\r\n04 05 06(30元)11 12 13(50元)";//"\r\n"可以有也可以没有
//如何分割成
Regex regex=new Regex("");
string[] strArr=regex.Split(str);
*/如何得到下面的数组?
strArr[0]="01 02 03";
strArr[1]="04 05 06";
strArr[2]="11 12 13";
*/

解决方案 »

  1.   

     //字符串
                string str = "01 02 03(10元)\r\n04 05 06(30元)11 12 13(50元)";//"\r\n"可以有也可以没有
                //如何分割成
                Regex regex = new Regex(@"\(\d+元\)\r*\n*");
                string[] strArr = regex.Split(str);
                /*可以得到数组,可是数组多了一个空值的?
                strArr[0]="01 02 03";
                strArr[1]="04 05 06";
                strArr[2]="11 12 13";
                 strArr[3]="";//怎么会多了这个出来,怎么去除?
                */
      

  2.   


    void Main()
    {
    string str="01 02 03(10元)\r\n04 05 06(30元)11 12 13(50元)";
    string[] strArr=Regex.Split(str,@"\([^)]+\)\D*");
        foreach(string s in strArr)
    Console.WriteLine(s);

    /*
    01 02 03
    04 05 06
    11 12 13 
    */
    }
      

  3.   

    不知道怎么去掉那个空字符串,用了别叫笨的方法;            string str = "01 02 03(10元)\r\n04 05 06(30元)11 12 13(50元)";
                string temp = Regex.Replace(str, @"\(\d+元\)\r*\n*", "ojlovecd");
                string[] strArr = temp.Split(new string[] { "ojlovecd" }, StringSplitOptions.RemoveEmptyEntries);
                foreach (string s in strArr)
                    Console.WriteLine(s);
      

  4.   

    还可以用MatchsRegex re = new Regex(@"(?!\r|\n)([\d\s]+)(?=\(\d+元\))");
    MatchCollection mc = re.Matches("01 02 03(10元)\r\n04 05 06(30元)11 12 13(50元)");
    List<string> results = new List<string>();
    foreach (Match m in mc)
        results.Add(m.Groups[1].Value);
    result.ForEach(r => Console.WriteLine(r));
      

  5.   

    Regex的Split方法中没有提供类似StringSplitOptions.RemoveEmptyEntries的去掉空白项的参数,只能自己做预处理            string str = "01 02 03(10元)\r\n04 05 06(30元)11 12 13(50元)";
                Regex regex1 = new Regex(@"^\([^()]*\)\r?\n?|\([^()]*\)\r?\n?$");
                Regex regex2 = new Regex(@"\([^()]*\)\r?\n?");
                string[] strArr = regex2.Split(regex1.Replace(str, ""));
                foreach (string s in strArr)
                {
                    richTextBox2.Text += s + "\n";
                }其实这种需求用Matches比较好