欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java判断字符串是否为IP地址的方法

程序员文章站 2022-03-27 19:49:49
java 判断字符串是否为ip地址,供大家参考,具体内容如下1、代码主要就是这么几个条件 非空 长度符合 0.0.0.0 - 255.255.255.255 包含分隔符 且 个数正确 四个全部...

java 判断字符串是否为ip地址,供大家参考,具体内容如下

1、代码

主要就是这么几个条件

  • 非空
  • 长度符合 0.0.0.0 - 255.255.255.255
  • 包含分隔符 且 个数正确
  • 四个全部是数字,且都在合理的范围内
 /**
 * 判断某个字符串是否是一个 ip 地址
 *
 * @param str 字符串
 */
 public static boolean isipstr(string str) {
 // 非空
 // boolean notblank = stringutils.isnotblank(str);
 // 长度符合 0.0.0.0 - 255.255.255.255
 // boolean length = commonutils.isnumberbetween(str.length(),7,15);

 if (stringutils.isnotblank(str) && commonutils.isnumberbetween(str.length(), 7, 15)) {
  string regex = ".";
  // 包含分隔符 且 个数正确
  if (str.contains(regex) && str.split(regex).length == 4) {
  boolean legalnumber = true;
  // 四个全部是数字,且都在合理的范围内
  for (string obj : lists.newarraylist(str.split(regex))) {
   if (numberutils.isdigit(obj)) {
   integer value = integer.parseint(obj);
   legalnumber = commonutils.isnumberbetween(value, 0, 255);
   } else {
   // 任意一个不是数字,不合法
   legalnumber = false;
   break;
   }
  }
  return legalnumber;
  }
 }
 return false;
}

2、commonutils 工具类

package cn.zjcs.common.util;

import cn.hutool.core.util.reutil;
import lombok.accesslevel;
import lombok.getter;
import lombok.noargsconstructor;

import java.math.bigdecimal;
import java.math.roundingmode;

/**
 * @author created by 谭健 on 2019/6/11. 星期二. 15:20.
 * © all rights reserved.
 */

@noargsconstructor(access = accesslevel.private)
public class commonutils {


 /**
 * 是否为 null
 *
 * @param o
 * @return null返回 true
 */
 public static boolean isnull(object o) {
 return o == null;
 }

 /**
 * 是否不为 null
 *
 * @param o
 * @return 不为 null 返回 true
 */
 public static boolean isnotnull(object o) {
 return !isnull(o);
 }

 /**
 * 是否是0 ,
 *
 * @param bigdecimal
 * @return 0 返回true
 */
 public static boolean iszerodecimal(bigdecimal bigdecimal) {
 return isnotnull(bigdecimal) && bigdecimal.compareto(bigdecimal.zero) == 0;
 }

 /**
 * 是否不是 0
 *
 * @param bigdecimal
 * @return 不是0 返回true
 */
 public static boolean isnotzerodecimal(bigdecimal bigdecimal) {
 return !iszerodecimal(bigdecimal);
 }

 /**
 * 是否是 1
 *
 * @param bigdecimal
 * @return 是 1 返回true
 */
 public static boolean isonedecimal(bigdecimal bigdecimal) {
 return isnotnull(bigdecimal) && bigdecimal.compareto(bigdecimal.one) == 0;
 }

 /**
 * 是否不是 1
 *
 * @param bigdecimal
 * @return 不是 1 返回true
 */
 public static boolean isnotonedecimal(bigdecimal bigdecimal) {
 return bigdecimal.compareto(bigdecimal.one) != 0;
 }

 /**
 * 是否是 0 long
 *
 * @param l
 * @return 是 0 long 返回 true
 */
 public static boolean iszerolong(long l) {
 return l != null && l.equals(0l);
 }

 /**
 * 是否不是 0 long
 *
 * @param l
 * @return 不是 0 long 返回 true
 */
 public static boolean isnotzerolong(long l) {
 return !iszerolong(l);
 }

 /**
 * 是否是 0 int
 *
 * @param l
 * @return 是 0 int 返回 true
 */
 public static boolean iszeroint(integer l) {
 return l != null && l.equals(0);
 }

 /**
 * 是否不是 0 int
 *
 * @param l
 * @return 不是 0 int 返回 true
 */
 public static boolean isnotzeroint(integer l) {
 return !iszeroint(l);
 }

 /**
 * 两个 decimal 是否相等
 *
 * @param i
 * @param j
 * @return 相等返回 true
 */
 public static boolean issamedecimal(bigdecimal i, bigdecimal j) {
 return i.compareto(j) == 0;
 }

 /**
 * 第一个 decimal 是否大于 第二个 decimal
 *
 * @param i
 * @param j
 * @return 大于 返回true
 */
 public static boolean isdecimalgt(bigdecimal i, bigdecimal j) {
 return i.compareto(j) > 0;
 }

 /**
 * 第一个 decimal 是否小于 第二个 decimal
 *
 * @param i
 * @param j
 * @return 小于 返回true
 */
 public static boolean isdecimallt(bigdecimal i, bigdecimal j) {
 return i.compareto(j) < 0;
 }

 /**
 * 特殊字符串处理
 *
 * @param character
 * @return
 */
 public static string replacespecialcharacter(string character) {
 string regex = "[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“'。,、?]";
 return reutil.replaceall(character, regex, "");
 }

 /**
 * 数据分比切割
 * <p>
 * 比如 p 为 2,要做千分切割,则 h 值为 "1000.00"
 * 得到值为 0.002
 *
 * @param p 输入值
 * @param h 切割值
 * @return 切割后的值
 */
 public static bigdecimal percentformat(integer p, string h) {
 return new bigdecimal(string.valueof(p)).divide(new bigdecimal(h), 4, roundingmode.half_up).setscale(4, bigdecimal.round_half_up);
 }

 public static boolean oreq(object... o) {
 if (o.length < 2) {
  throw new nullpointerexception("长度不足");
 }
 object o1 = o[0];
 for (int i = 1; i < o.length - 1; i++) {
  if (o1.equals(o[i])) {
  return true;
  }
 }
 return false;
 }

 /**
 * 包含边界值
 *
 * @param number 检查值
 * @param min 最小
 * @param max 最大
 */
 public static boolean isnumberbetween(number number, number min, number max) {
 return number.longvalue() >= min.longvalue() && number.longvalue() <= max.longvalue();
 }


 /**
 * 标准数学计算
 */
 @noargsconstructor(access = accesslevel.private)
 public static class math {

 /**
  * 精确的表示分数的数学计算,因为使用double 等会丢失精度
  */
 @suppresswarnings("rawtypes")
 @getter
 public static class fraction extends number implements comparable {
  private static final long serialversionuid = 2330398718018182597l;
  /**
  * 定义分子
  */
  private long numerator = 0;
  /**
  * 定义分母
  */
  private long denominator = 1;

  public fraction() {
  this(0, 1);
  }

  public fraction(long numerator, long denominator) {
  long gcd = gcd(numerator, denominator);
  this.numerator = ((denominator > 0) ? 1 : -1) * numerator / gcd;
  this.denominator = java.lang.math.abs(denominator) / gcd;
  }

  /**
  * 求最大公约数
  */
  private long gcd(long f, long s) {
  long fabs = java.lang.math.abs(f);
  long sabs = java.lang.math.abs(s);
  // 学术名称 gcd
  int _gcd = 1;
  // 欧几里德算法
  for (int i = 1; i <= fabs && i <= sabs; i++) {
   if (fabs % i == 0 && sabs % i == 0) {
   _gcd = i;
   }
  }
  return _gcd;
  }

  /**
  * 分数的加法
  *
  */
  public fraction add(fraction secondrational) {
  long n = numerator * secondrational.getdenominator() + denominator * secondrational.getnumerator();
  long d = denominator * secondrational.getdenominator();
  return new fraction(n, d);
  }

  /**
  * 分数的减法
  *
  */
  public fraction subtract(fraction secondrational) {
  long n = numerator * secondrational.getdenominator() - denominator * secondrational.getnumerator();
  long d = denominator * secondrational.getdenominator();
  return new fraction(n, d);
  }

  /**
  * 分数乘法
  *
  */
  public fraction mulitiply(fraction secondrational) {
  long n = numerator * secondrational.getnumerator();
  long d = denominator * secondrational.getdenominator();
  return new fraction(n, d);
  }

  /**
  * 分数除法
  *
  */
  public fraction divide(fraction secondrational) {
  long n = numerator * secondrational.getdenominator();
  long d = denominator * secondrational.numerator;
  return new fraction(n, d);
  }

  @override
  public string tostring() {
  if (denominator == 1) {
   return numerator + "";
  } else {
   return numerator + "/" + denominator;
  }

  }

  @suppresswarnings("all")
  @override
  public boolean equals(object parm1) {
  return (this.subtract((fraction) (parm1))).getnumerator() == 0;
  }

  @override
  public int compareto(object o) {
  if ((this.subtract((fraction) o)).getnumerator() > 0) {
   return 1;
  } else if ((this.subtract((fraction) o)).getnumerator() > 0) {
   return -1;
  } else {
   return 0;
  }

  }

  @override
  public double doublevalue() {
  return numerator * 1.0 / denominator;
  }

  @override
  public float floatvalue() {
  return (float) doublevalue();
  }

  @override
  public int intvalue() {
  return (int) doublevalue();
  }

  @override
  public long longvalue() {
  return (long) doublevalue();
  }
 }


 /**
  * @param dividend 被除数
  * @param divisor 除数
  * @param accuracy 精度
  */
 public static bigdecimal divide(bigdecimal dividend, bigdecimal divisor, int accuracy) {
  // 0 除以任何数 = 无穷大,任何数除以 0 无法除,都会抛出错误
  if (iszerodecimal(divisor) || iszerodecimal(dividend)) {
  return bigdecimal.zero;
  }
  return dividend.divide(divisor, 16, roundingmode.half_up).setscale(accuracy, roundingmode.half_up);
 }

 /**
  * @param f  .
  * @param s  .
  * @param accuracy 精度
  */
 public static bigdecimal multiply(bigdecimal f, bigdecimal s, int accuracy) {
  // 0 * 任何数 = 0
  if (iszerodecimal(f) || iszerodecimal(s)) {
  return bigdecimal.zero;
  }
  return f.multiply(s).setscale(accuracy, roundingmode.half_up);
 }

 /**
  * 开多次方根
  *
  */
 public static bigdecimal pow(bigdecimal f, bigdecimal s) {
  // 防止出现 infinity 的情况
  if (iszerodecimal(f) && isdecimallt(s, bigdecimal.zero)) {
  return bigdecimal.zero;
  }
  return new bigdecimal(string.valueof(java.lang.math.pow(f.doublevalue(), s.doublevalue())));
 }

 /**
  * 获取分数值
  *
  */
 public static bigdecimal fraction(fraction f) {
  long denominator = f.getdenominator();
  long numerator = f.getnumerator();
  return divide(new bigdecimal(string.valueof(numerator)), new bigdecimal(string.valueof(denominator)), 16);
 }

 }
}

3、numberutils 工具类

package cn.zjcs.common.util;

import lombok.accesslevel;
import lombok.noargsconstructor;

import java.math.bigdecimal;
import java.util.regex.matcher;
import java.util.regex.pattern;

/**
 * @author ..
 */
@noargsconstructor(access = accesslevel.private)
public class numberutils {

 private static final pattern digit_pattern = pattern.compile("[0-9]*");

 /**
 * 判断 某个 decimal 是否等于 0
 *
 * @param decimal bigdecimal 数字
 * @return 等于0 返回 true
 */
 public static boolean iszerodecimal(bigdecimal decimal) {
 return decimal == null || decimal.compareto(bigdecimal.zero) == 0;
 }

 /**
 * 判断 某个 decimal 是否不等于 0
 *
 * @param decimal bigdecimal 数字
 * @return 不等于0 返回 true
 */
 public static boolean isnotzerodecimal(bigdecimal decimal) {
 return decimal != null && decimal.compareto(bigdecimal.zero) != 0;
 }

 /**
 * 判断一个字符串是否是数字
 *
 * @param var 字符串
 * @return 是数字返回 true
 */
 public static boolean isdigit(string var) {
 matcher isnum = digit_pattern.matcher(var);
 return isnum.matches();
 }

 public static boolean isemptynumber(number number) {
 return number == null
   || number.intvalue() == 0
   || number.longvalue() == 0
   || number.doublevalue() == 0.00
   || number.bytevalue() == 0
   || number.floatvalue() == 0.0
   || number.shortvalue() == 0;
 }

 public static boolean isnotemptynumber(number number) {
 return !isemptynumber(number);
 }

 public static boolean isnotzerolong(long something) {
 if (something == null) {
  return false;
 }
 return !something.equals(0l);
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。