小弟最近写一个有关检查输入的IP是否合法的函数:
1。IP地址中有且仅有三个点。
2。IP地址中的四个字段在[0,255]之间,而且,第一个字段不能为0。
例如IP:192。168。0。56  为了得到IP的字段,我用了String.split(".") 但是,split()函数
不支持这个,原因是split()函数带的参数必须满足正则表达式。如果将IP地址中的点换为逗号,分号冒号,是可以的。
请问我应该怎么做才能得到IP的四个字段?

解决方案 »

  1.   

    转义就可以了
    s.split("\\.");
      

  2.   

    假设用s表示用户输入的IP
    int n1=0,n2=0,n3=0,n4=0;
    String s1=null,s2=null,s3=null,s4=null;
    int t1=0,t2=0,t3=0,t4=0;n1=s.indexOf('.');
    n2=s.indexOf('.',n1+1);
    n3=s.indexOf('.',n2+1);
    n4=s.indexOf('.',n3+1);
    if(n1>0&&n4==0)
    {
      try
      {
        s1=s.substring(0,n1);
        s2=s.snbstring(n1+1,n2);
        s3=s.snbstring(n2+1,n3);
        s4=s.snbstring(n3+1,s.length());
      }
      catch(Exception e){}
    }
    t1=Intrger.parseInt(s1);
    t2=Intrger.parseInt(s2);
    t3=Intrger.parseInt(s3);
    t4=Intrger.parseInt(s4);
    if(t1>0&&t1<=255&&t2>=0&&t2<=255&&t3>=0&&t3<=255&&t4>=0&&t4<=255)
    {
    System.out.paintln("输入IP正确");
    }
    else
    System.out.println("输入IP错误");小第是个初学者!!所想的程序思想不是很有新颖,所以写出来的程序几是这个样了.也不知道行不行,呵呵所以呢请高手哥哥给我来点指点吧!!
      

  3.   

    public static  boolean testIP(String ip)
    {
    boolean isIp=true;
    if(ip.lastIndexOf('.')==(ip.trim().length()-1))
    return false;
    String[] ips=ip.trim().split("[\\.]");
    if(ips.length!=4)
    return false;
    if(Integer.parseInt(ips[0])>255||Integer.parseInt(ips[0])<=0)
    return false;
    for(int i=1;i<ips.length;i++)
    {
    if(Integer.parseInt(ips[i])>255||Integer.parseInt(ips[i])<0)
    return false;
    }
    return isIp;
    }
      

  4.   

    if(ip.lastIndexOf('.')==(ip.trim().length()-1))
    return false;
    ///////不能少,因为"22.22.222.22...."这种情况
      

  5.   

    另一种比较苯的办法,用StringTokenizer
      

  6.   

    用StringTokenizer 或者用正则表达式的转义 [\\.] 的方法