Java判断字符串是否为IP地址的方法
Java判断字符串是否为IP地址,供大家参考,具体内容如下
1、代码
主要就是这么几个条件
- 非空
- 长度符合0.0.0.0-255.255.255.255
- 包含分隔符且个数正确
- 四个全部是数字,且都在合理的范围内
/**
*判断某个字符串是否是一个IP地址
*
*@paramstr字符串
*/
publicstaticbooleanisIpStr(Stringstr){
//非空
//booleannotBlank=StringUtils.isNotBlank(str);
//长度符合0.0.0.0-255.255.255.255
//booleanlength=CommonUtils.isNumberBetween(str.length(),7,15);
if(StringUtils.isNotBlank(str)&&CommonUtils.isNumberBetween(str.length(),7,15)){
Stringregex=".";
//包含分隔符且个数正确
if(str.contains(regex)&&str.split(regex).length==4){
booleanlegalNumber=true;
//四个全部是数字,且都在合理的范围内
for(Stringobj:Lists.newArrayList(str.split(regex))){
if(NumberUtils.isDigit(obj)){
Integervalue=Integer.parseInt(obj);
legalNumber=CommonUtils.isNumberBetween(value,0,255);
}else{
//任意一个不是数字,不合法
legalNumber=false;
break;
}
}
returnlegalNumber;
}
}
returnfalse;
}
2、CommonUtils工具类
packagecn.zjcs.common.util;
importcn.hutool.core.util.ReUtil;
importlombok.AccessLevel;
importlombok.Getter;
importlombok.NoArgsConstructor;
importjava.math.BigDecimal;
importjava.math.RoundingMode;
/**
*@authorCreatedby谭健on2019/6/11.星期二.15:20.
*©AllRightsReserved.
*/
@NoArgsConstructor(access=AccessLevel.PRIVATE)
publicclassCommonUtils{
/**
*是否为null
*
*@paramo
*@returnnull返回true
*/
publicstaticbooleanisNull(Objecto){
returno==null;
}
/**
*是否不为null
*
*@paramo
*@return不为null返回true
*/
publicstaticbooleanisNotNull(Objecto){
return!isNull(o);
}
/**
*是否是0,
*
*@parambigDecimal
*@return0返回true
*/
publicstaticbooleanisZeroDecimal(BigDecimalbigDecimal){
returnisNotNull(bigDecimal)&&bigDecimal.compareTo(BigDecimal.ZERO)==0;
}
/**
*是否不是0
*
*@parambigDecimal
*@return不是0返回true
*/
publicstaticbooleanisNotZeroDecimal(BigDecimalbigDecimal){
return!isZeroDecimal(bigDecimal);
}
/**
*是否是1
*
*@parambigDecimal
*@return是1返回true
*/
publicstaticbooleanisOneDecimal(BigDecimalbigDecimal){
returnisNotNull(bigDecimal)&&bigDecimal.compareTo(BigDecimal.ONE)==0;
}
/**
*是否不是1
*
*@parambigDecimal
*@return不是1返回true
*/
publicstaticbooleanisNotOneDecimal(BigDecimalbigDecimal){
returnbigDecimal.compareTo(BigDecimal.ONE)!=0;
}
/**
*是否是0long
*
*@paraml
*@return是0long返回true
*/
publicstaticbooleanisZeroLong(Longl){
returnl!=null&&l.equals(0L);
}
/**
*是否不是0long
*
*@paraml
*@return不是0long返回true
*/
publicstaticbooleanisNotZeroLong(Longl){
return!isZeroLong(l);
}
/**
*是否是0int
*
*@paraml
*@return是0int返回true
*/
publicstaticbooleanisZeroInt(Integerl){
returnl!=null&&l.equals(0);
}
/**
*是否不是0int
*
*@paraml
*@return不是0int返回true
*/
publicstaticbooleanisNotZeroInt(Integerl){
return!isZeroInt(l);
}
/**
*两个decimal是否相等
*
*@parami
*@paramj
*@return相等返回true
*/
publicstaticbooleanisSameDecimal(BigDecimali,BigDecimalj){
returni.compareTo(j)==0;
}
/**
*第一个decimal是否大于第二个decimal
*
*@parami
*@paramj
*@return大于返回true
*/
publicstaticbooleanisDecimalGt(BigDecimali,BigDecimalj){
returni.compareTo(j)>0;
}
/**
*第一个decimal是否小于第二个decimal
*
*@parami
*@paramj
*@return小于返回true
*/
publicstaticbooleanisDecimalLt(BigDecimali,BigDecimalj){
returni.compareTo(j)<0;
}
/**
*特殊字符串处理
*
*@paramcharacter
*@return
*/
publicstaticStringreplaceSpecialCharacter(Stringcharacter){
StringregEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“'。,、?]";
returnReUtil.replaceAll(character,regEx,"");
}
/**
*数据分比切割
*
*比如p为2,要做千分切割,则h值为"1000.00"
*得到值为0.002
*
*@paramp输入值
*@paramh切割值
*@return切割后的值
*/
publicstaticBigDecimalpercentFormat(Integerp,Stringh){
returnnewBigDecimal(String.valueOf(p)).divide(newBigDecimal(h),4,RoundingMode.HALF_UP).setScale(4,BigDecimal.ROUND_HALF_UP);
}
publicstaticbooleanorEq(Object...o){
if(o.length<2){
thrownewNullPointerException("长度不足");
}
Objecto1=o[0];
for(inti=1;i=min.longValue()&&number.longValue()<=max.longValue();
}
/**
*标准数学计算
*/
@NoArgsConstructor(access=AccessLevel.PRIVATE)
publicstaticclassMath{
/**
*精确的表示分数的数学计算,因为使用double等会丢失精度
*/
@SuppressWarnings("rawtypes")
@Getter
publicstaticclassFractionextendsNumberimplementsComparable{
privatestaticfinallongserialVersionUID=2330398718018182597L;
/**
*定义分子
*/
privatelongnumerator=0;
/**
*定义分母
*/
privatelongdenominator=1;
publicFraction(){
this(0,1);
}
publicFraction(longnumerator,longdenominator){
longgcd=gcd(numerator,denominator);
this.numerator=((denominator>0)?1:-1)*numerator/gcd;
this.denominator=java.lang.Math.abs(denominator)/gcd;
}
/**
*求最大公约数
*/
privatelonggcd(longf,longs){
longfAbs=java.lang.Math.abs(f);
longsAbs=java.lang.Math.abs(s);
//学术名称Gcd
int_Gcd=1;
//欧几里德算法
for(inti=1;i<=fAbs&&i<=sAbs;i++){
if(fAbs%i==0&&sAbs%i==0){
_Gcd=i;
}
}
return_Gcd;
}
/**
*分数的加法
*
*/
publicFractionadd(FractionsecondRational){
longn=numerator*secondRational.getDenominator()+denominator*secondRational.getNumerator();
longd=denominator*secondRational.getDenominator();
returnnewFraction(n,d);
}
/**
*分数的减法
*
*/
publicFractionsubtract(FractionsecondRational){
longn=numerator*secondRational.getDenominator()-denominator*secondRational.getNumerator();
longd=denominator*secondRational.getDenominator();
returnnewFraction(n,d);
}
/**
*分数乘法
*
*/
publicFractionmulitiply(FractionsecondRational){
longn=numerator*secondRational.getNumerator();
longd=denominator*secondRational.getDenominator();
returnnewFraction(n,d);
}
/**
*分数除法
*
*/
publicFractiondivide(FractionsecondRational){
longn=numerator*secondRational.getDenominator();
longd=denominator*secondRational.numerator;
returnnewFraction(n,d);
}
@Override
publicStringtoString(){
if(denominator==1){
returnnumerator+"";
}else{
returnnumerator+"/"+denominator;
}
}
@SuppressWarnings("all")
@Override
publicbooleanequals(Objectparm1){
return(this.subtract((Fraction)(parm1))).getNumerator()==0;
}
@Override
publicintcompareTo(Objecto){
if((this.subtract((Fraction)o)).getNumerator()>0){
return1;
}elseif((this.subtract((Fraction)o)).getNumerator()>0){
return-1;
}else{
return0;
}
}
@Override
publicdoubledoubleValue(){
returnnumerator*1.0/denominator;
}
@Override
publicfloatfloatValue(){
return(float)doubleValue();
}
@Override
publicintintValue(){
return(int)doubleValue();
}
@Override
publiclonglongValue(){
return(long)doubleValue();
}
}
/**
*@paramdividend被除数
*@paramdivisor除数
*@paramaccuracy精度
*/
publicstaticBigDecimaldivide(BigDecimaldividend,BigDecimaldivisor,intaccuracy){
//0除以任何数=无穷大,任何数除以0无法除,都会抛出错误
if(isZeroDecimal(divisor)||isZeroDecimal(dividend)){
returnBigDecimal.ZERO;
}
returndividend.divide(divisor,16,RoundingMode.HALF_UP).setScale(accuracy,RoundingMode.HALF_UP);
}
/**
*@paramf.
*@params.
*@paramaccuracy精度
*/
publicstaticBigDecimalmultiply(BigDecimalf,BigDecimals,intaccuracy){
//0*任何数=0
if(isZeroDecimal(f)||isZeroDecimal(s)){
returnBigDecimal.ZERO;
}
returnf.multiply(s).setScale(accuracy,RoundingMode.HALF_UP);
}
/**
*开多次方根
*
*/
publicstaticBigDecimalpow(BigDecimalf,BigDecimals){
//防止出现Infinity的情况
if(isZeroDecimal(f)&&isDecimalLt(s,BigDecimal.ZERO)){
returnBigDecimal.ZERO;
}
returnnewBigDecimal(String.valueOf(java.lang.Math.pow(f.doubleValue(),s.doubleValue())));
}
/**
*获取分数值
*
*/
publicstaticBigDecimalfraction(Fractionf){
longdenominator=f.getDenominator();
longnumerator=f.getNumerator();
returndivide(newBigDecimal(String.valueOf(numerator)),newBigDecimal(String.valueOf(denominator)),16);
}
}
}
3、NumberUtils工具类
packagecn.zjcs.common.util;
importlombok.AccessLevel;
importlombok.NoArgsConstructor;
importjava.math.BigDecimal;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
/**
*@author..
*/
@NoArgsConstructor(access=AccessLevel.PRIVATE)
publicclassNumberUtils{
privatestaticfinalPatternDIGIT_PATTERN=Pattern.compile("[0-9]*");
/**
*判断某个decimal是否等于0
*
*@paramdecimalBigDecimal数字
*@return等于0返回true
*/
publicstaticbooleanisZeroDecimal(BigDecimaldecimal){
returndecimal==null||decimal.compareTo(BigDecimal.ZERO)==0;
}
/**
*判断某个decimal是否不等于0
*
*@paramdecimalBigDecimal数字
*@return不等于0返回true
*/
publicstaticbooleanisNotZeroDecimal(BigDecimaldecimal){
returndecimal!=null&&decimal.compareTo(BigDecimal.ZERO)!=0;
}
/**
*判断一个字符串是否是数字
*
*@paramvar字符串
*@return是数字返回true
*/
publicstaticbooleanisDigit(Stringvar){
MatcherisNum=DIGIT_PATTERN.matcher(var);
returnisNum.matches();
}
publicstaticbooleanisEmptyNumber(Numbernumber){
returnnumber==null
||number.intValue()==0
||number.longValue()==0
||number.doubleValue()==0.00
||number.byteValue()==0
||number.floatValue()==0.0
||number.shortValue()==0;
}
publicstaticbooleanisNotEmptyNumber(Numbernumber){
return!isEmptyNumber(number);
}
publicstaticbooleanisNotZeroLong(Longsomething){
if(something==null){
returnfalse;
}
return!something.equals(0L);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。