源码分析八(org.springframework.util包之StringUtils类))

一:spring框架util包中的StringUtils类主要是处理关于字符串

的功能方法,下面直接结合代码分析:

//判断字符串是否为空,如果为nul或者""则返回true,否则返回false
public static boolean isEmpty(Object str)
    {
        return str == null || "".equals(str);
    }

  

//判断字符串是否有长度,不等于null同时长度大于0,则为true
//这里重载两个hasLength方法,其中CharSequence是String的父类,是接口
public static boolean hasLength(CharSequence str)
    {
        return str != null && str.length() > 0;
    }

    public static boolean hasLength(String str)
    {
        return hasLength(((CharSequence) (str)));
    }

  

//如果为空则直接返回false,如果字符串中有一个不是空白,则表示
//有内容,返回true 
public static boolean hasText(CharSequence str)
    {
        if(!hasLength(str))
            return false;
        int strLen = str.length();
        //遍历字符序列,如果其中有一个不是空白,则返回true
        for(int i = 0; i < strLen; i++)
            if(!Character.isWhitespace(str.charAt(i)))
                return true;

        return false;
    }

    public static boolean hasText(String str)
    {
        return hasText(((CharSequence) (str)));
    }

  

//判断字符串是否包含空白,如果为空则直接返回false,,遍历字符序列,如果其中
//有一个字符是空白,则返回true,如果都不是,返回false
public static boolean containsWhitespace(CharSequence str)
    {
        if(!hasLength(str))
            return false;
        int strLen = str.length();
        for(int i = 0; i < strLen; i++)
            if(Character.isWhitespace(str.charAt(i)))
                return true;

        return false;
    }

    public static boolean containsWhitespace(String str)
    {
        return containsWhitespace(((CharSequence) (str)));
    }

  

//去除字符串前后的空白
public static String trimWhitespace(String str)
    {
        if(!hasLength(str))
            return str;
        StringBuilder sb;
        //去除字符串前导空白
        for(sb = new StringBuilder(str); sb.length() > 0 && Character.isWhitespace(sb.charAt(0)); sb.deleteCharAt(0));
        //去除字符串后导空白
        for(; sb.length() > 0 && Character.isWhitespace(sb.charAt(sb.length() - 1)); sb.deleteCharAt(sb.length() - 1));
        return sb.toString();
    }

  

//去除字符串所有空白
public static String trimAllWhitespace(String str)
    {
        if(!hasLength(str))
            return str;
        StringBuilder sb = new StringBuilder(str);
        //从第一个字符开始判断,是否为空白,如果是则删除,如果不是则index加1
        //判断第二个,然后一直到sb.length=index,则跳出循环
        for(int index = 0; sb.length() > index;)
            if(Character.isWhitespace(sb.charAt(index)))
                sb.deleteCharAt(index);
            else
                index++;

        return sb.toString();
    }

  

//去除前导空白,只取空白的前一部分 
public static String trimLeadingWhitespace(String str)
    {
        if(!hasLength(str))
            return str;
        StringBuilder sb;
        //去除前导空白
        for(sb = new StringBuilder(str); sb.length() > 0 && Character.isWhitespace(sb.charAt(0)); sb.deleteCharAt(0));
        return sb.toString();
    }

  

//去除后导空白,取去除空白后一部分 
public static String trimTrailingWhitespace(String str)
    {
        if(!hasLength(str))
            return str;
        StringBuilder sb;
        //去除后导空白
        for(sb = new StringBuilder(str); sb.length() > 0 && Character.isWhitespace(sb.charAt(sb.length() - 1)); sb.deleteCharAt(sb.length() - 1));
        return sb.toString();
    }

  

//删除前导为leadingCharacter的字符
 public static String trimLeadingCharacter(String str, char leadingCharacter)
    {
        if(!hasLength(str))
            return str;
        StringBuilder sb;
        //只要前导是指定字符则删除
        for(sb = new StringBuilder(str); sb.length() > 0 && sb.charAt(0) == leadingCharacter; sb.deleteCharAt(0));
        return sb.toString();
    }

  

//删除后导字符trailingCharacter
 public static String trimTrailingCharacter(String str, char trailingCharacter)
    {
        if(!hasLength(str))
            return str;
        StringBuilder sb;
        //只要后导是指定字符则删除
        for(sb = new StringBuilder(str); sb.length() > 0 && sb.charAt(sb.length() - 1) == trailingCharacter; sb.deleteCharAt(sb.length() - 1));
        return sb.toString();
    }

  

//忽略大小写,判断字符串是否已prefix开始 
public static boolean startsWithIgnoreCase(String str, String prefix)
    { 
        //如果源字符串str或者前缀字符串prefix为null,则返回false
        if(str == null || prefix == null)
            return false;
        //如果str以prefix开始,return true
        if(str.startsWith(prefix))
            return true;
       //如果源字符串的长度小于prefix的长度,返回false
        if(str.length() < prefix.length())
        {
            return false;
        } else
        {
            将源字符串prefix长度转换为小写,前缀字符串也转换为小写,比较是否相等
            String lcStr = str.substring(0, prefix.length()).toLowerCase();
            String lcPrefix = prefix.toLowerCase();
            return lcStr.equals(lcPrefix);
        }
    }

  

//忽略大小写,判断源字符串str是否以suffix结尾,处理逻辑类似上一个方法 
public static boolean endsWithIgnoreCase(String str, String suffix)
    {
        if(str == null || suffix == null)
            return false;
        if(str.endsWith(suffix))
            return true;
        if(str.length() < suffix.length())
        {
            return false;
        } else
        {
            String lcStr = str.substring(str.length() - suffix.length()).toLowerCase();
            String lcSuffix = suffix.toLowerCase();
            return lcStr.equals(lcSuffix);
        }
    }

  

原文地址:https://www.cnblogs.com/warrior4236/p/6659807.html