str="123456(12-16)123123"
字符串位数不确定。怎么取出括号里的12跟16

解决方案 »

  1.   

    string[] sTemp0,sTemp1;
    sTrmp0=str.split('(');
    sTemp1=sTemp0[1].split(')');
    结果:
    sTemp1[0]="12-16";
      

  2.   

    string input;
    System.Text.RegularExpressions.MatchCollection mc = System.Text.RegularExpressions.Regex.Matches(input, "\(\d*-\d*\)");
    foreach (System.Text.RegularExpressions.Match m in mc)
                {
                    string[] splitArray = m.Value.Split('-');
                    //数组随便你怎么操作啦
                }
      

  3.   


    string tempStr = "123456(12-16)123123";//sr.ReadToEnd();
                string pattern = @"[^(]+(\([^)]+\))[\s\S]*";
                tempStr = Regex.Replace(tempStr, pattern, "$1");//输出:(12-16)
      

  4.   


                string str = "123456(12-16)123123";            int v1 = str.IndexOf("(");
                int v2 = str.IndexOf("-");
                int v3 = str.IndexOf(")");            string str1 = str.Substring(v1 + 1, v2 - v1 - 1);
                string str2 = str.Substring(v2 + 1, v3 - v2 - 1);
      

  5.   

            string str = "123456(12-16)123123";
            Regex regex = new Regex(@"\(([^\-]+)\-([^\)]+)\)");
            Match m = regex.Match(str);
            while (m.Success)
            {
                Response.Write("<br/>");
                Response.Write(m.Groups[1].Value);
                Response.Write("<br/>");
                Response.Write(m.Groups[2].Value);
                m = m.NextMatch();
            }
      

  6.   

    用indexOf先找到(,然后在用SubString在截取也可以吧 
      

  7.   

    两次分割就可以了:string str="123456(12-16)123123";
    string [] split = str.Split(new Char[] {'(' , ')'});string [] split2 = split[1].Split(new Char[] {'- '});
    split2 就是你要的结果12,16
      

  8.   

    我再介绍一种方法吧
    string str = "123456(12-16)123123";
    string str1=str.Remove(0, str.IndexOf("("));
    MessageBox.Show(str1.Remove(str1.IndexOf(")")+1,(str1.Length-str1.IndexOf(")"))-1));
      

  9.   

               string inputs = "123456(12-16)123123";
               Match mat = Regex.Match(inputs, @"((?<data1>[\d\w]*)\-(?<data2>[\d\w]*))", RegexOptions.Singleline);
               Console.WriteLine(string.Concat("1:", mat.Groups["data1"].Value, "  2:", mat.Groups["data2"].Value));//1:12  2:16   根据这里括号内可以是数字或者字符,单是数字,把\W去掉即可。
      

  10.   

    IndexOf定位比较直观,正则也不错
      

  11.   

    string str1=Regex.Match(str,@"\(\d+\-\d+\)").Value;
    string[] array=Regex.Split(str1.Substring(1,str1.Length-2),@"\-");