判断一个字符串是否是ip地址的实现方法

最近在学习java,研究一些算法,找些联系题,自己去下手试试。这里记录下学习历程,也增强自己的记忆。初学者,见笑了。从开始判断一个字符串是不是正规ipv4的地址开始练习吧,初步代码如下:

public class isIpv4{

public String cutblank(String str){

//如果字符串前有空格
            while(str.startsWith(""))
            {
            str=  str.substring(1,str.length()).trim();
            
            }
            //去掉字符串后的空格
            while(str.endsWith(""))
            {
            str= str.substring(0,str.length()-1).trim();
            System.out.println(str);
            }
            return str;

}

public boolean isipv4(String ip){
            //判断是否是一个ip地址
            boolean a=false;
            ip = this.cutblank(ip);
            boolean flag =ip.matches("\\d{1,3}\\.d{1,3}\\.d{1,3}\\.d{1,3}");
            if(flag)
            {
            String s[] = ip.split("\\.");
            int i1= Integer.parseInt(s[0]);
            int i2= Integer.parseInt(s[1]);
            System.out.println(i2);
            int i3= Integer.parseInt(s[2]);
            int i4= Integer.parseInt(s[3]);
            if(i1>0&&i1<256&&i2<256&&i3<256&&i4<256)
                a = true;

}
            return a;
         }
            
            public static void main(String[] args) throws Exception {
                    String s= " 122.005.133.244 ";
                    isIpv4 isip = new isIpv4();
                    boolean check = isip.isipv4(s);
                    System.out.println(check);
                    System.out.println(check? "是一个常规ipv4地址" : "不是一个ip地址");

}

}

运行第一次的时候出错:

调试了半天,问题还是差不出来,干脆屏蔽这块空白字符处理的代码继续

屏蔽掉字符处理后还是报错,各种打印值后发现正则写的有点问题

更正:

boolean flag =ip.matches("\\d{1,3}\\.d{1,3}\\.d{1,3}\\.d{1,3}");

更正后继续运行调试,终于打印出结果,没有报错信息了

小小高兴下,继续吧

继续打开字符处理屏蔽找出字符越界的问题,一直没查出报错原因,这里留一个坑。后来想想,我只是要减去空格啊,为啥只处理头尾呢,不如直接trim()了啊,现成的api啊。这里被自己的笨到了

继续改了:

public class isIpv4{
    
            
            public boolean isipv4(String ip){
            //判断是否是一个ip地址
            boolean a=false;
            ip = cutblank(ip);
            boolean flag =ip.matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}");
         
            if(flag)
            {
            String s[] = ip.split("\\.");
            int i1= Integer.parseInt(s[0]);
            int i2= Integer.parseInt(s[1]);
            System.out.println(i2);
            int i3= Integer.parseInt(s[2]);
            int i4= Integer.parseInt(s[3]);
            if(i1>0&&i1<256&&i2<256&&i3<256&&i4<256)
                a = true;

}
            return a;
         }
            
public String cutblank(String str){
            
            String str1=str.trim();
            /*
            //如果字符串前有空格
            while(str.startsWith(""))
            {
            str=  str.substring(1,str.length()).trim();
            
            }
            //去掉字符串后的空格
            while(str.endsWith(""))
            {
            str= str.substring(0,str.length()-1).trim();
            System.out.println(str);
            }
            */
            System.out.println(str1);
            
            return str1;

}

public static void main(String[] args) throws Exception {
                    String s = " 122.005.133.244 ";
                    isIpv4 isip = new isIpv4();
                    boolean check = isip.isipv4(s);
                    System.out.println(check);
                    System.out.println(check? "是一个常规ipv4地址" : "不是一个ip地址");

}

}

测试了下,结果妥妥的:

测试 ” 122.005.133.244”

测试:" a2..451.3 4 "

这里把字符串转换成integer的好处就是避免去判断子串中第一个字符不为0的情况,第一个和第二个不能同时为0的情况

时间: 2024-10-12 14:50:52

判断一个字符串是否是ip地址的实现方法的相关文章

Java正则表达式判断一个字符串是否是ipv4地址

public class StringTest { public static void main(String[] args) { String regex = "\\A(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z"; String str1 = "1.1.1.0"; boolean flag1 = str1.matches(regex); System.

判断一个字符串是不是一个合法的IP地址

最近在笔试的时候遇到碰一道算法题, 要求判断一个字符串是不是合法的ip地址. 将我的思路发出来分享一下,不一定正确,也不一定是最优的方法.希望能分享一些交流 要求用java或者c来实现,我的java代码: 1 public class Test_ip { 2 //程序入口 3 public static void main(String[] args) { 4 Solution s = new Solution(); // 业务逻辑放在Solution类里面 5 //String test_st

oracle中如何判断一个字符串是否含有汉字

oracle中如何判断一个字符串是否含有汉字 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ①全角字符的判断,或者是含有汉字的字符串的判断 本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力. 一.2.2 实验环境介绍 11.2.0.3  RHEL6.5 一.2.3 本文简介 看到网友问,怎么查询表中某个字段数据是不是包含了

ES6--javascript判断一个字符串是否存在另一个字符串中

es5中我们经常使用indexof()方法来判断一个字符串是否包含另外一个字符串中. 如果存在则返回匹配到的第一个索引值.如果没有则返回 -1.所以,判断一个字符串是否包含另外一个字符串中只需要判断是否为-1就行.-1代表不存在. 例如: let str = 'Hello World!'; console.log(str.indexOf('H'));//0 str中"H"的出现的第一个索引为0 console.log(str.indexOf('o'));//4 str中"o&

python判断一个字符串是否是小数

最近在写代码的时候,发现一个问题,想判断一个字符串是不是一个合法的小数,发现字符串没有内置判断小数的方法,然后就写了一个判断字符串是否是小数,可以判断正负小数,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <pre class="prettyprint lang-py">def is_float(s): s = str(s) if s.count('.')==1:#判断小数点个数 sl = s.split('.')#按照小数点进行

判断一个字符串中的每字符是否相同

描述:aaa  每个字符相同, aba 每个字符不全相同, a113 没有字符也不全相同 <title>判断一个字符串中的每字符是否相同</title> <script> function judgeCharEqual(str){ for(var i = 0; i < str.length; i++){ if(str[0] != str[i]){ return false; } } return true; } var res = prompt('请输入一个字符串

#2 判断一个字符串是否包含重复字符

「Google面试题」 [题目] 判断一个字符串是否包含重复字符.例如:“good”就包含重复字符‘o’,而“abc”就不包含重复字符 [题目分析] 对字符串进行遍历,统计每一个字符的个数,如果不为1则跳出遍历并返回True [解答] 1 #!/Users/minutesheep/.pyenv/shims/python 2 # -*- coding: utf-8 -*- 3 4 5 def isDup(strs): 6 ''' 7 判断字符串是否有重复字符 8 ''' 9 for ch in s

回文指的是一个字符串从前面读和从后面读都一 样,编写一个算法判断一个字符串是否为回文。

回文指的是一个字符串从前面读和从后面读都一 样,编写一个算法判断一个字符串是否为回文. 要求: 1)采用链栈实现算法: 2)从键盘输入一个字符串,输出判断结果. #include"stdio.h" #include"stdlib.h" typedef char ElemType; typedef struct stnode { ElemType data; struct stnode *next; }StNode, *LinkStack; int huiwen(ch

Java判断一个字符串是否是包含某个字符

Java判断一个字符串是否是包含某个字符 在java中我们经常要判断一个字符串是否被包含在另外一个字符集中,那么如何用代码实现这个功能需求呢? contains方法 该方法返回true,如果此字符串包含,否则返回false. public class containString { public static void main(String[] args) { String str1 = "sdfsfsfa2we"; String str2 = "we"; Sys