Java笔记44——字符串(String)判断是否为空

前言

在实际Java开发当中,我们肯定要判读字符串是否为空的需求。今天遇到一个比较奇葩的问题,我们公司服务器接口明明返回时空字符串给我,可是我用传统的方法去判断就是不为空的情况。

复现一下问题

if(str !=null || str.length > 0  || !"".equals(str) || !str.isEmpty()){
	System.out.println("字符串不为空!");
}else{
	System.out.println("字符串为空!");
}

上面的方法,本应该是没有问题的。但是结果总是让人意外的…

我的解决办法

我在友盟的SDK中找到StringUtils的字符串工具类,网上也有说添加commons-lang-2.5.jar也有StringUtlis方法。

if(StringUtils.isNotBlank(str)){
	System.out.println("字符串不为空!");
}else if(StringUtils.isBlank(str)){
	System.out.println("字符串为空!");
}
友盟SDK的StringUtils源码
import android.text.TextUtils;
import java.security.MessageDigest;

public class StringUtils {
    private static final char[] DIGITS_LOWER = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};

    public StringUtils() {
    }

    public static String[] parseURL(String var0) {
        if (TextUtils.isEmpty(var0)) {
            return null;
        } else {
            if (var0.startsWith("//")) {
                var0 = "http:" + var0;
            }

            int var1 = var0.indexOf("://");
            if (var1 == -1) {
                return null;
            } else {
                String[] var2 = new String[2];
                String var3 = var0.substring(0, var1);
                if (!"http".equalsIgnoreCase(var3) && !"https".equalsIgnoreCase(var3)) {
                    return null;
                } else {
                    var2[0] = var3;
                    int var4 = var0.length();

                    int var5;
                    for(var5 = var1 + 3; var5 < var4; ++var5) {
                        char var6 = var0.charAt(var5);
                        if (var6 == '/' || var6 == ':' || var6 == '?' || var6 == '#') {
                            var2[1] = var0.substring(var1 + 3, var5);
                            return var2;
                        }
                    }

                    if (var5 == var4) {
                        var2[1] = var0.substring(var1 + 3);
                        return var2;
                    } else {
                        return null;
                    }
                }
            }
        }
    }

    public static String concatString(String var0, String var1) {
        return (new StringBuilder(var0.length() + var1.length())).append(var0).append(var1).toString();
    }

    public static String concatString(String var0, String var1, String var2) {
        return (new StringBuilder(var0.length() + var1.length() + var2.length())).append(var0).append(var1).append(var2).toString();
    }

    public static String buildKey(String var0, String var1) {
        return concatString(var0, "://", var1);
    }

    public static String simplifyString(String var0, int var1) {
        return var0.length() <= var1 ? var0 : concatString(var0.substring(0, var1), "......");
    }

    public static String stringNull2Empty(String var0) {
        return var0 == null ? "" : var0;
    }

    public static String md5ToHex(String var0) {
        if (var0 == null) {
            return null;
        } else {
            try {
                MessageDigest var1 = MessageDigest.getInstance("MD5");
                return bytesToHexString(var1.digest(var0.getBytes("utf-8")));
            } catch (Exception var2) {
                return null;
            }
        }
    }

    private static String bytesToHexString(byte[] var0, char[] var1) {
        int var2 = var0.length;
        char[] var3 = new char[var2 << 1];
        int var4 = 0;

        for(int var5 = 0; var4 < var2; ++var4) {
            var3[var5++] = var1[(240 & var0[var4]) >>> 4];
            var3[var5++] = var1[15 & var0[var4]];
        }

        return new String(var3);
    }

    public static String bytesToHexString(byte[] var0) {
        return var0 == null ? "" : bytesToHexString(var0, DIGITS_LOWER);
    }

    public static String longToIP(long var0) {
        StringBuilder var2 = new StringBuilder(16);
        long var3 = 1000000000L;

        do {
            var2.append(var0 / var3);
            var2.append('.');
            var0 %= var3;
            var3 /= 1000L;
        } while(var3 > 0L);

        var2.setLength(var2.length() - 1);
        return var2.toString();
    }

    public static boolean isNotBlank(String var0) {
        return !isBlank(var0);
    }

    public static boolean isBlank(String var0) {
        int var1;
        if (var0 != null && (var1 = var0.length()) != 0) {
            for(int var2 = 0; var2 < var1; ++var2) {
                if (!Character.isWhitespace(var0.charAt(var2))) {
                    return false;
                }
            }

            return true;
        } else {
            return true;
        }
    }
}

总结

最后才发现可能是接口回传是一个空格之类的,我用上面的方法解决了。希望对Java开发的小伙伴有帮助。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值