如"DDD(Y100) ddd"
截取 100(长度不确定的数字)

解决方案 »

  1.   

    string str = "DDD(Y100) ddd";
    string num=str.Substring(str.IndexOf("(Y")+2,str.IndexOf(")")-str.IndexOf("(Y")-2);
      

  2.   


    char[] s = "DDD(Y100) ddd";int startIndex = -1;
    int endIndex = -1;
    for ( int i = 0; i < s.count; i++)
    {
        char c = s[i];
        
        if (startIndex == -1 && c is a number)  // c >= '0' && c <= '9'
        {
           startIndex = i;
           continue;
        }    if (startIndex >= 0 && c is not a number)
        {
            endIndex = i - 1;
         }     if (startIndex >=0 && endIndex >=0)
          {
            //get substring from startIndex to endIndex
            //output substring
            //reset startIndex and endIndex to -1
          }}
      

  3.   


    string tempStr = @"DDD(Y1005454) ddd";            string pattern = @"[^\d]*(\d*)";
                string outPut = Regex.Replace(tempStr, pattern,"$1");
      

  4.   

    string str = "DDD(Y100) ddd";
                int begin = str.IndexOf("(Y");
                int end = str.IndexOf(")");
                string result = str.Substring(begin+2, end-5);
                MessageBox.Show(result);
    长度可变 格式不变
    结果://100
      

  5.   

    var reg = new Regex(@"(?i)(?<=\(Y)\d*(?=\))")
      

  6.   

    不行 如果是 Y(Y100)-->9个    3%+0 会得到括号后的数字
      

  7.   

    Y(Y100)-->9个 3%+0不一定是Y 有可能是其他字符
    除了括号里面的数字,其他都是不确定的,但括号里的数字前面一定有一个字母
      

  8.   

    我的方式你试了吗LZstring str = "DDD(Y100) ddd";
      int begin = str.IndexOf("(");
      int end = str.IndexOf(")");
      string result = str.Substring(begin+2, end-5);
      MessageBox.Show(result);
      

  9.   

    你这个只能针对"DDD(Y100) ddd"这种格式,Y(Y100)-->9个 3%+0 就不行
      

  10.   


    string strBegin=""Y(Y100)-->9个 3%+0";";
    string str = strBegin.Trim();
                int begin = str.IndexOf("(");
                int end = str.IndexOf(")");
                string result = str.Substring(begin + 2, end - 3);
                MessageBox.Show(result);
    //结果:100刚才是考虑到你空格的问题,现在只要是 XXX(.....)XXXXX都能得到
      

  11.   


    private string f(string sk)
      sk = "ddddjjoo(sdYsd4590ffg)dg";//假设你是这样的
                string tempstr=sk;
                int start=0;
                int end = 0;
                List<string> L = new List<string>();
                for (int n = 0; n < 10;n++ )
                {
                    L.Add(n.ToString());
                }
                for (int i = 0; i < sk.Length; i++)
                {
                    string c = sk.Substring(i, 1);
                    if (L.Contains(c))
                    {
                        start = i;
                        break;
                        
                    }
                                   }
                sk = sk.Substring(start);
                for (int j = 0; j < sk.Length; j++)
                {
                    string c = sk.Substring(j, 1);
                    if (!L.Contains(c))
                    {
                        end = j-1;
                        break;                }
                }
                string result = null;
                if (start != end)
                {
                    result = tempstr.Substring(start,end+1);
                }
    return result;楼主这个好使,不好使你来砍我,啊哈哈
      

  12.   

    private string f(string sk)
      sk = "ddddjjoo(sdYsd4590ffg)dg";//假设你是这样的
                string tempstr=sk;
                int start=0;
                int end = 0;
                List<string> L = new List<string>();
                for (int n = 0; n < 10;n++ )
                {
                    L.Add(n.ToString());
                }
                for (int i = 0; i < sk.Length; i++)
                {
                    string c = sk.Substring(i, 1);
                    if (L.Contains(c))
                    {
                        start = i;
                        break;
                        
                    }
                                   }
                sk = sk.Substring(start);
                for (int j = 0; j < sk.Length; j++)
                {
                    string c = sk.Substring(j, 1);
                    if (!L.Contains(c))
                    {
                        end = j-1;
                        break;                }
                }
                string result = null;
                if (start != end)
                {
                    result = tempstr.Substring(start,end+1);
                }
    return result;
    }
    少了对括号,汗
      

  13.   


    private string f(string sk)
    {
      sk = "ddddjjoo(sdYsd4590ffg)dg";//假设你是这样的
                string tempstr=sk;
                int start=0;
                int end = 0;
                List<string> L = new List<string>();
                for (int n = 0; n < 10;n++ )
                {
                    L.Add(n.ToString());
                }
                for (int i = 0; i < sk.Length; i++)
                {
                    string c = sk.Substring(i, 1);
                    if (L.Contains(c))
                    {
                        start = i;
                        break;
                        
                    }
                                   }
                sk = sk.Substring(start);
                for (int j = 0; j < sk.Length; j++)
                {
                    string c = sk.Substring(j, 1);
                    if (!L.Contains(c))
                    {
                        end = j-1;
                        break;                }
                }
                string result = null;
                if (start != end)
                {
                    result = tempstr.Substring(start,end+1);
                }
    return result;
    }
      

  14.   


         string tempStr = @"Y(Y100)-->9个 3%+";            string pattern = @"[^(]*\([^\d]*(?<value>[\d]*)\)[\s\S]*";
                
                MatchCollection mc = Regex.Matches(tempStr, pattern, RegexOptions.Multiline|RegexOptions.IgnoreCase);
                for (int i = 0; i < mc.Count; i++)
                {
                    //string ss = mc[i].Value;//得到-7.0
                    //string ss = mc[i].Groups["id"].Value;
                    string text = mc[i].Groups["value"].Value;//为100
                    
                }
      

  15.   


                List<string> list = new List<string> { "Y(Y100)-->9个 3%+", "DDD(Y100) ddd" };
                Regex reg = new Regex(@"(?i)(?<=\([a-z])\d+(?=\))");
                foreach (string s in list)
                    Console.WriteLine(reg.Match(s).Value);
    /*
    100
    100
    */
      

  16.   

    我也来凑凑热闹(Java写的):
    public String mySubString(String str){
    String one=str.substring("DDD(Y".length());//取得:100) ddd
    String two=one.substring(one.indexOf(")"));//取得:) ddd
    String result=one.substring(0,one.length()-two.length());//以one为基础,从0开始,截取的长度=one-two
    return result;
    }
    测试数据:DDD(Y10000000000000009) ddd 通过。