zoukankan      html  css  js  c++  java
  • 源码分析八(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);
            }
        }
    

      

  • 相关阅读:
    为WCF增加UDP绑定(实践篇)
    WCF服务编程-基础
    Entity Framework 数据库先行、模型先行、代码先行
    C# FTP上传下载(支持断点续传)
    使用WCF上传文件
    MySQL · BUG分析 · Rename table 死锁分析
    MySQL · 物理备份 · Percona XtraBackup 备份原理
    MySQL · 答疑解惑 · MySQL 锁问题最佳实践
    MySQL · 特性分析 · MDL 实现分析
    MySQL · 引擎特性 · InnoDB 事务子系统介绍
  • 原文地址:https://www.cnblogs.com/warrior4236/p/6659807.html
Copyright © 2011-2022 走看看