我想判断一个字符串中是否含有数字,如果有数字则提出数字如果没有则赋别的值代码如下: ........
         String zhekou = rsCol[i][4];
         String zkStr ="";
         int zkLen = zhekou.indexOf("折") ;
   if (zkLen < 0)   //无折
     zkStr = "详情" ;
else //有“折”
{
         int num = zhekou.indexOf("^\d+$") ;  //判断是否有数字
if (num < 0)                   //无数字
zkStr = "详情" ;
else                   //有数字
{
   int dot = zhekou.lastIndexOf(".") ;
     if (dot > 0)                  //有小数点
zkStr = zhekou.substring(dot-1,dot+2) + "折" ;
else                 //无小数点有数字
          zkStr = zhekou.substring(num,num+1) + "折" ;
           }         }为什么总是报错,那位高手帮我看看是不是我的正则表达式写的有问题还是什么原因,谢谢

解决方案 »

  1.   

    int num = zhekou.indexOf("^\d+$") 这里好像有问题吧.
    试试
    int num = zhekou.indexOf("\d+$")
      

  2.   

    int num = zhekou.indexOf("^\d+$")这样是不行的,indexOf的参数不能有正则表达式,用这个
    boolean a = zhekou.matches("\\d+$");
    试试
    你的数据形式是什么,你这样的正则表达式符合你的数据吗
      

  3.   

    gtw0520(学海沉浮)如果用刚才你说的这个 boolean a = zhekou.matches("\\d+$");那我下面那句代码:else                 //无小数点有数字
              zkStr = zhekou.substring(num,num+1) + "折" ;
    应该怎么改啊?
      

  4.   

    String zhekou = "工时费9折";
             String zkStr ="";
             int zkLen = zhekou.indexOf("折") ;
               if (zkLen < 0)   //无折
                 zkStr = "详情" ;
            else //有“折”
            {
                zhekou = zhekou.substring(0,zkLen);
                if(zhekou.matches("^\\D*\\d+.\\d+$")){
                    zkStr = zhekou.substring(zkLen-3,zkLen)+"折";
                }else if(zhekou.matches("^\\D*\\d+$")){
                    zkStr = zhekou.substring(zkLen-1,zkLen)+"折";
                }else{
                    zkStr = "详情" ;
                }
    }这么有规律的话,可以用上面这个,不过必须是8.5折,不能是8.55折
      

  5.   

    第一句改回这个String zhekou = rsCol[i][4];了吗,另外   if (zkLen < 0)   //无折
    zkStr = "详情" ; 改成 if (zkLen < 0)   //无折{  zkStr = "详情" ;} 试试,你的数据中会不会有多个数据?