字符串如下:
asdfas,esd,s0120,dg,s1020,asda,s0470,ew
其规律如下:字段之间用','号隔开,其中字符's'后固定接四位数字,
现在要判定全部这一行字符串中是否有小于450的数字,如果有则返回真,否则返回假?比如上面这行有s0120,120小于450,所以返回真,
而如果字符串为:
iwoer,woe,s0560,de,s0790,awe,s0460,eie
由于所有的s后面的数字都大于450,则返回假。
请问有没有简单的方法来判定?

解决方案 »

  1.   

    先用','来split 
    然后循环得到的字符串数组 如果StartsWith("s") 则截取s后的四位, int.TryParse后判断是否小于450 只要有<450 立刻结束循环 返回false
      

  2.   

    你用Split把字符串以","为条件分成字符串数组,再判断后面第一个字符有没有“s”,有就判断里面数字
      

  3.   

    tryif (System.Text.RegularExpressions.Regex.IsMatch(yourStr, @"\bs0([0-3]\d{2}|4[0-4]\d)\b"))
    {
        return true;
    }
    else
    {
        return false;
    }
      

  4.   

    谢谢lxcnn(过客)及其他朋友,忘记一个特殊情况,如果有s0000,则也是返回false,那正则表达式是怎样?
      

  5.   

    不好意思,刚才表述有错误
    是这样,如果有s0000,而其它的数字中并没有小于450的,那么也返回false.就是说,s0000不作为判定的依据
      

  6.   

    tryif (System.Text.RegularExpressions.Regex.IsMatch(yourStr, @"\bs0([0-3](?!00)\d{2}|4[0-4]\d)\b"))
    {
        return true;
    }
    else
    {
        return false;
    }
      

  7.   

    sorry,上面的有问题,悠修正一下if (System.Text.RegularExpressions.Regex.IsMatch(yourStr, @"\bs0(?!000)([0-3]\d{2}|4[0-4]\d)\b"))
    {
        return true;
    }
    else
    {
        return false;
    }
      

  8.   

    我想jiatong1981(末日之痕)说得比较清楚了,应该可以。
      

  9.   

    lxcnn(过客):你好,上面的判定是不是不包含450?如果正好是450,那么表达式是什么?
      

  10.   

    是不是这样?
    if (System.Text.RegularExpressions.Regex.IsMatch(yourStr, @"\bs0(?!000)([0-4][0-5]0)\b"))
    {
        return true;
    }
    else
    {
        return false;
    }
      

  11.   

    如果说450也是true的话,这样写if (System.Text.RegularExpressions.Regex.IsMatch(yourStr, @"\bs0(?!000)([0-3]\d{2}|4([0-4]\d|50))\b"))
    {
        return true;
    }
    else
    {
        return false;
    }你那样写漏掉了很多种可以通过的数字