str.charAt(i) 
'0' -- '9'
'a' -- 'z'
'A' -- 'Z'
......

解决方案 »

  1.   

    根据楼上的楼上的想法,我也想了一个
    把String处理成StringBuffer,然后删除里面的数字和;,最后判断该StringBuffer对象的长度。
      

  2.   

    刚刚写了一个函数,试试吧:
    ...
      static public boolean analyse(String s)
          throws IOException
      {
        StringReader r = new StringReader(s);
        StreamTokenizer st = new StreamTokenizer(r);
        st.ordinaryChars(48,57);//1-9
        st.ordinaryChar(';');//;    while(st.nextToken() != StreamTokenizer.TT_EOF)
        {
          switch(st.ttype)
          {
    case StreamTokenizer.TT_EOL:
      return false;
    case StreamTokenizer.TT_NUMBER:
      return false;
    case StreamTokenizer.TT_WORD:
      return false;
    default:
      break;
          }
        }    return true;
      }
    ...返回值:false -- 不是
            true -- 是
      

  3.   

    还不如直接判断有没有超过范围的字符
    int i=0;
    int j=str.length();
    char ch;
    for(;i<j;i++){
     ch=str.charAt(i);
     if(!(ch==';'||ch>='0'&&ch<='9')){
       return false;
     }
     return true;
    }
      

  4.   


    public static boolean IsNum(String strin)
    {
       String s=strin.replaceAll("[0-9;]+","");
       if(s.equals(""))
       {
     return true;
       }else{
     return false;
       }
    }
    给分啦.
      

  5.   

    String s="[\\d]*[;][\\d]*";
        String s1="123;23231123";
        java.util.regex.Pattern p=java.util.regex.Pattern.compile(s);
        System.out.println(p.matches(s,s1));
    如果输出的是true则表示匹配,也就是数字和;组成,如果返回false则表示不匹配
    楼上那个"[0-9;]"不能完全匹配
      

  6.   

    to   beyond_xiruo(希偌): 
        不会吧,我用String s=";13411203456790;334987224;;;234;";//返回true
    和String s=";134a11203456790;334987224;;;234;";//返回false
    测过,正常的呀,你用什么字符串测的呢?
      

  7.   

    这个String s="[\\d]*[;][\\d]*";
    与正则式不能完全匹配,这里面至少要有一个';',不然返回的是false.
      

  8.   

    sorry
    俺指的是不能完全匹配
      

  9.   

    呵呵,其实我们是一样的,你的"[\\d]*[;]*[\\d]*"="[\\d;]*"="[0-9;]*"
    后面两个用+和*的效果在这里都差不多
      

  10.   

    完美解答:
    pubilc static boolean isMyPattern(String str) {
       return java.util.regex.Pattern.matches("^[0-9;]*$",str);
    }
      

  11.   

    考虑到效率和对内存占用的问题
    如果是十分大的字符串,或者是直接判断一个文件的内容等等因素
    还是用StreamTokenizer吧,就好像sax与dom的区别一样
    建议搂主结帖
      

  12.   

    to helpall():
    不知
    ^[0-9;]*$和
    ^[0-9;]*
    [0-9;]*
    [0-9;]*$
    [0-9;]*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
    有何区别,请指教!
      

  13.   

    谢谢xiaofenguser(风雨)兄的指正,UNIX做多了,不好意思,想当然了. 对正则表达式在java中的实现有了更深的了解.但如果用下面函数,还是有区别的,而这才是正则表达式的正确结果. 结果如下:
    public static boolean isMyPattern(String p, String str) {
       return Pattern.compile(p).matcher(str).find();
    }
    pattern="^[0-9;]*$"  str="a2;3" result=false
    pattern="^[0-9;]*"  str="2;3a" result=true
    pattern="[0-9;]*"  str="a2;3a" result=true
    pattern="[0-9;]*$"  str="a09" result=true
    pattern="[0-9;]*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"  str="a123" result=true
      

  14.   

    private boolean isFormatType(String str)

        for( int i=0;i<str.length;i++ )
           if( !(Characher.isDigit(str.charAt(i)) || str.charAt(i)==';' )))
              return false;
        return true;}
      

  15.   

    怎么在api里面找不到java.util.regex.Pattern类?
    请问在哪个包里面?
    但是程序能用。
      

  16.   

    将String变成char,在循环比较s和;