StringUtils类中isEmpty与isBlank的区别

来源:互联网 发布:上海 逛街 知乎 编辑:程序博客网 时间:2024/05/16 23:35

org.apache.commons.lang.StringUtils类提供了String的常用操作,最为常用的判空有如下两种isEmpty(String str)和isBlank(String str)。

StringUtils.isEmpty(String str) 判断某字符串是否为空,为空的标准是 str==null 或 str.length()==0

System.out.println(StringUtils.isEmpty(null));        //trueSystem.out.println(StringUtils.isEmpty(""));          //trueSystem.out.println(StringUtils.isEmpty("   "));       //falseSystem.out.println(StringUtils.isEmpty("dd"));        //false

StringUtils.isNotEmpty(String str) 等价于 !isEmpty(String str)

StringUtils.isBlank(String str) 判断某字符串是否为空或长度为0或由空白符(whitespace) 构成

System.out.println(StringUtils.isBlank(null));        //trueSystem.out.println(StringUtils.isBlank(""));          //trueSystem.out.println(StringUtils.isBlank("   "));       //trueSystem.out.println(StringUtils.isBlank("dd"));        //false    

StringUtils.isBlank(String str) 等价于 !isBlank(String str)

实例展示

自定义判断方法,实现同样的判断逻辑

复制代码
    /**     * 判断对象是否为null,不允许空白串     *     * @param object    目标对象类型     * @return     */    public static boolean isNull(Object object){        if (null == object) {            return true;        }        if ((object instanceof String)){            return "".equals(((String)object).trim());        }        return false;    }    /**     * 判断对象是否不为null     *     * @param object     * @return     */    public static boolean isNotNull(Object object){        return !isNull(object);    }
复制代码
System.out.println(StringHandler.isNull(null));        //trueSystem.out.println(StringHandler.isNull(""));          //trueSystem.out.println(StringHandler.isNull("   "));       //trueSystem.out.println(StringHandler.isNull("dd"));        //false

通常我们通过HttpServletRequest获取到的参数,需要经过判空处理,转型然后得到我们想要的值,这里可以进行这些操作的简单封装.如下

复制代码
        /**     * 从<code>HttpServletRequest</code>中获取<code>String</code>类型的值, 不允许传递空串     *      * @param request     *                             @see HttpServletRequest     * @param paramName     *                             参数名称     * @return     *                             返回需要的值     */    public static final String getString(HttpServletRequest request,String paramName){        return getString(request, paramName, false);    }        /**     * 从<code>HttpServletRequest</code>中获取<code>String</code>类型的值     *      * 如果传递过来的参数为包含空白字符串的字符,认为为有效值, 否则返回null     *      * @param request     *                             @see HttpServletRequest     * @param paramName     *                             参数名称     * @return     *                             返回需要的值     */    public static final String getString(HttpServletRequest request,String paramName,boolean isWithSpace) {        String tmp = request.getParameter(paramName);        if(isWithSpace){            //如果允许包含空格,则使用isEmpty判空            if (!StringUtils.isEmpty(tmp)){                return tmp;            }        }else{            if(!StringUtils.isBlank(tmp)){                return tmp;            }        }        return null;    }                /**     * 从<code>HttpServletRequest</code>中获取<code>Long</code>类型的值     *     * @param request     *                             @see HttpServletRequest     * @param paramName     *                             参数名称     * @return     *                             返回需要的值     */    public static final Long getLong(HttpServletRequest request,String paramName) {        return getLong(request, paramName, -1L);    }    /**     * 从<code>HttpServletRequest</code>中获取<code>Long</code>类型的值     *     * @param request     *                             @see HttpServletRequest     * @param paramName     *                             参数名称     * @param defaultValue     *                             默认值     * @return     *                             返回需要的值     */    public static final Long getLong(HttpServletRequest request,String paramName,Long defaultValue) {        String tmp = request.getParameter(paramName);        if (!StringUtils.isBlank(tmp)){            try {                Long value = Long.parseLong(tmp);                return value;            } catch (NumberFormatException e) {                return -1L;            }        }        return defaultValue;    }        /**     * 从<code>HttpServletRequest</code>中获取<code>Integer</code>类型的值     *     * @param request     *                             @see HttpServletRequest     * @param paramName     *                             参数名称     * @return     *                             返回需要的值     */        public static final Integer getInt(HttpServletRequest request,String paramName) {        return getInt(request,paramName, -1);    }    /**     * 从<code>HttpServletRequest</code>中获取<code>Integer</code>类型的值     *     * @param request     *                             @see HttpServletRequest     * @param paramName     *                             参数名称     * @param defaultValue     *                             默认值     * @return     *                             返回需要的值     */    public static final Integer getInt(HttpServletRequest request,String paramName, int defaultValue) {        String tmp = request.getParameter(paramName);        if (!StringUtils.isBlank(tmp)){            try {                Integer value = Integer.parseInt(tmp);                return value;            } catch (NumberFormatException e) {                return -1;            }        }        return defaultValue;    }        /**     * 从<code>HttpServletRequest</code>中获取<code>Short</code>类型的值     *     * @param request     *                             @see HttpServletRequest     * @param paramName     *                             参数名称     * @return     *                             返回需要的值     */        public static final Short getShort(HttpServletRequest request,String paramName) {        return getShort(request,paramName, (short)-1);    }    /**     * 从<code>HttpServletRequest</code>中获取<code>Short</code>类型的值     *     * @param request     *                             @see HttpServletRequest     * @param paramName     *                             参数名称     * @param defaultValue     *                             默认值     * @return     *                             返回需要的值     */    public static final Short getShort(HttpServletRequest request,String paramName, short defaultValue) {        String tmp = request.getParameter(paramName);        if (!StringUtils.isBlank(tmp)){            try {                Short value = Short.parseShort(tmp);                return value;            } catch (NumberFormatException e) {                return (short)-1;            }        }        return defaultValue;    }            /**     * 从<code>HttpServletRequest</code>中获取<code>Byte</code>类型的值     *     * @param request     *                             @see HttpServletRequest     * @param paramName     *                             参数名称     * @return     *                             返回需要的值     */        public static final Byte getByte(HttpServletRequest request,String paramName) {        return getByte(request,paramName, (byte)-1);    }    /**     * 从<code>HttpServletRequest</code>中获取<code>Byte</code>类型的值     *     * @param request     *                             @see HttpServletRequest     * @param paramName     *                             参数名称     * @param defaultValue     *                             默认值     * @return     *                             返回需要的值     */    public static final Byte getByte(HttpServletRequest request,String paramName, Byte defaultValue) {        String tmp = request.getParameter(paramName);        if (!StringUtils.isBlank(tmp)){            try {                Byte value = Byte.parseByte(tmp);                return value;            } catch (NumberFormatException e) {                return (byte)-1;            }        }        return defaultValue;    }            /**     * 从<code>HttpServletRequest</code>中获取<code>Double</code>类型的值     *     * @param request     *                             @see HttpServletRequest     * @param paramName     *                             参数名称     * @return     *                             返回需要的值     */    public static final Double getDouble(HttpServletRequest request,String paramName) {        return getDouble(request, paramName,-1D);    }        /**     * 从<code>HttpServletRequest</code>中获取<code>Double</code>类型的值     *     * @param request     *                             @see HttpServletRequest     * @param paramName     *                             参数名称     * @param defaultValue     *                             默认值     * @return     *                             返回需要的值     */    public static final Double getDouble(HttpServletRequest request,String paramName, Double defaultValue) {        String tmp = request.getParameter(paramName);        if (!StringUtils.isBlank(tmp)){            try {                Double value = Double.parseDouble(tmp);                return value;            } catch (NumberFormatException e) {                return -1D;            }        }        return defaultValue;    }            /**     * 从<code>HttpServletRequest</code>中获取<code>Float</code>类型的值     *     *                     * @param request     *                             @see HttpServletRequest     * @param paramName     *                             参数名称     * @return     *                             返回需要的值     */    public static final Float getFloat(HttpServletRequest request,String paramName) {        return getFloat(request, paramName,-1F);    }        /**     * 从<code>HttpServletRequest</code>中获取<code>Float</code>类型的值     *     * @param request     *                             @see HttpServletRequest     * @param paramName     *                             参数名称     * @param defaultValue     *                             默认值     * @return     *                             返回需要的值     */    public static final Float getFloat(HttpServletRequest request,String paramName, Float defaultValue) {        String tmp = request.getParameter(paramName);        if (!StringUtils.isBlank(tmp)){            try {                Float value = Float.parseFloat(tmp);                return value;            } catch (NumberFormatException e) {                return -1F;            }        }        return defaultValue;    }    
复制代码

再附加个人经常用的几个String的操作
1.字符串编码转换

复制代码
    /**     * change UTF8 To GB2312     * @param target     * @return     */    public static final String UTF82GB2312(String target) {        try {            return new String(target.getBytes("UTF-8"), "gb2312");        } catch (Exception localException) {            System.err.println("UTF8 TO GB2312 change error!");        }        return null;    }    /**     * change UTF8 To GBK     * @param target     * @return     */    public static final String UTF82GBK(String target) {        try {            return new String(target.getBytes("UTF-8"), "GBK");        } catch (Exception localException) {            System.err.println("UTF8 TO GBK change error!");        }        return null;    }    /**     * change UTF8 To ISO8859-1     * @param target     * @return     */    public static final String UTF82ISO(String target) {        try {            return new String(target.getBytes("UTF-8"), "ISO8859-1");        } catch (Exception localException) {            System.err.println("UTF8 TO ISO8859-1 change error!");        }        return null;    }    /**     * change Windows-1252 To UTF-8     * @param target     * @return     */    public static final String Windows1252UTF8(String target) {        try {            return new String(target.getBytes("Windows-1252"), "UTF-8");        } catch (Exception localException) {            System.err.println("Windows1252 To UTF8 chage error");        }        return null;    }    
复制代码

2.文本追加高亮

复制代码
    /**     * 给串增加颜色标签     * @param color     * @param target     * @return     */    public static String withColor(String color, String target) {        return withColor(color, target,true);    }        /**     * 给串增加颜色标签     * @param color     * @param target     * @param paramBoolean     * @return     */    public static String withColor(String color, String target, boolean paramBoolean) {        if (paramBoolean)            return "<font color='".concat(color).concat("'>").concat(target).concat("</font>");        return target;    }    
复制代码
System.out.println(StringHandler.withColor("red","文本串", true));

运行结果

<font color='red'>文本串</font>