常用StringUtils工具方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用StringUtils工具方法相关的知识,希望对你有一定的参考价值。

参考技术A package com.cdms.common.utils;

import java.util.ArrayList;

import java.util.Collection;

import java.util.HashSet;

import java.util.List;

import java.util.Map;

import java.util.Set;

import com.cdms.common.core.text.StrFormatter;

/**

* 字符串工具类

*

* @author yanwg

*/

public class StringUtilsextends org.apache.commons.lang3.StringUtils



/** 空字符串 */

    private static final StringNULLSTR ="";

    /** 下划线 */

    private static final char SEPARATOR ='_';

    /**

    * 获取参数不为空值

    *

    * @param value defaultValue 要判断的value

    * @return value 返回值

    */

    public static T nvl(T value, T defaultValue)



return value !=null ? value : defaultValue;

   

/**

    * * 判断一个Collection是否为空, 包含List,Set,Queue

*

    * @param coll 要判断的Collection

    * @return true:为空 false:非空

    */

    public static boolean isEmpty(Collection coll)



return isNull(coll) || coll.isEmpty();

   

/**

    * * 判断一个Collection是否非空,包含List,Set,Queue

*

    * @param coll 要判断的Collection

    * @return true:非空 false:空

    */

    public static boolean isNotEmpty(Collection coll)



return !isEmpty(coll);

   

/**

    * * 判断一个对象数组是否为空

    *

    * @param objects 要判断的对象数组

    ** @return true:为空 false:非空

    */

    public static boolean isEmpty(Object[] objects)



return isNull(objects) || (objects.length ==0);

   

/**

    * * 判断一个对象数组是否非空

    *

    * @param objects 要判断的对象数组

    * @return true:非空 false:空

    */

    public static boolean isNotEmpty(Object[] objects)



return !isEmpty(objects);

   

/**

    * * 判断一个Map是否为空

    *

    * @param map 要判断的Map

    * @return true:为空 false:非空

    */

    public static boolean isEmpty(Map map)



return isNull(map) || map.isEmpty();

   

/**

    * * 判断一个Map是否为空

    *

    * @param map 要判断的Map

    * @return true:非空 false:空

    */

    public static boolean isNotEmpty(Map map)



return !isEmpty(map);

   

/**

    * * 判断一个字符串是否为空串

    *

    * @param str String

    * @return true:为空 false:非空

    */

    public static boolean isEmpty(String str)



return isNull(str) ||NULLSTR.equals(str.trim());

   

/**

    * * 判断一个字符串是否为非空串

    *

    * @param str String

    * @return true:非空串 false:空串

    */

    public static boolean isNotEmpty(String str)



return !isEmpty(str);

   

/**

    * * 判断一个对象是否为空

    *

    * @param object Object

    * @return true:为空 false:非空

    */

    public static boolean isNull(Object object)



return object ==null;

   

/**

    * * 判断一个对象是否非空

    *

    * @param object Object

    * @return true:非空 false:空

    */

    public static boolean isNotNull(Object object)



return !isNull(object);

   

/**

    * * 判断一个对象是否是数组类型(Java基本型别的数组)

    *

    * @param object 对象

    * @return true:是数组 false:不是数组

    */

    public static boolean isArray(Object object)



return isNotNull(object) && object.getClass().isArray();

   

/**

    * 去空格

    */

    public static Stringtrim(String str)



return (str ==null ?"" : str.trim());

   

/**

    * 截取字符串

    *

    * @param str 字符串

    * @param start 开始

    * @return 结果

    */

    public static Stringsubstring(final String str, int start)



if (str ==null)



return NULLSTR;

       

if (start <0)



start = str.length() + start;

       

if (start <0)



start =0;

       

if (start > str.length())



return NULLSTR;

       

return str.substring(start);

   

/**

    * 截取字符串

    *

    * @param str 字符串

    * @param start 开始

    * @param end 结束

    * @return 结果

    */

    public static Stringsubstring(final String str, int start, int end)



if (str ==null)



return NULLSTR;

       

if (end <0)



end = str.length() + end;

       

if (start <0)



start = str.length() + start;

       

if (end > str.length())



end = str.length();

       

if (start > end)



return NULLSTR;

       

if (start <0)



start =0;

       

if (end <0)



end =0;

       

return str.substring(start, end);

   

/**

    * 格式化文本, 表示占位符

    * 此方法只是简单将占位符 按照顺序替换为参数

    * 如果想输出 使用 \\转义 即可,如果想输出 之前的 \ 使用双转义符 \\\\ 即可

    * 例:

    * 通常使用:format("this is for ", "a", "b") -> this is a for b

    * 转义: format("this is \\ for ", "a", "b") -> this is \ for a

    * 转义\: format("this is \\\\ for ", "a", "b") -> this is \a for b

    *

    * @param template 文本模板,被替换的部分用 表示

    * @param params 参数值

    * @return 格式化后的文本

    */

    public static Stringformat(String template, Object... params)



if (isEmpty(params) ||isEmpty(template))



return template;

       

return StrFormatter.format(template, params);

   

/**

    * 字符串转set

*

    * @param str 字符串

    * @param sep 分隔符

    * @return set集合

    */

    public static final Setstr2Set(String str, String sep)



return new HashSet(str2List(str, sep, true, false));

   

/**

    * 字符串转list

*

    * @param str 字符串

    * @param sep 分隔符

    * @param filterBlank 过滤纯空白

    * @param trim 去掉首尾空白

    * @return list集合

    */

    public static final Liststr2List(String str, String sep, boolean filterBlank, boolean trim)



List list =new ArrayList();

        if (StringUtils.isEmpty(str))



return list;

       

// 过滤空白字符串

        if (filterBlank && StringUtils.isBlank(str))



return list;

       

String[] split = str.split(sep);

        for (String string : split)



if (filterBlank && StringUtils.isBlank(string))



continue;

           

if (trim)



string = string.trim();

           

list.add(string);

       

return list;

   

/**

    * 下划线转驼峰命名

    */

    public static StringtoUnderScoreCase(String str)



if (str ==null)



return null;

       

StringBuilder sb =new StringBuilder();

        // 前置字符是否大写

        boolean preCharIsUpperCase =true;

        // 当前字符是否大写

        boolean curreCharIsUpperCase =true;

        // 下一字符是否大写

        boolean nexteCharIsUpperCase =true;

        for (int i =0; i < str.length(); i++)



char c = str.charAt(i);

            if (i >0)



preCharIsUpperCase = Character.isUpperCase(str.charAt(i -1));

           

else

           

preCharIsUpperCase =false;

           

curreCharIsUpperCase = Character.isUpperCase(c);

            if (i < (str.length() -1))



nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i +1));

           

if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase)



sb.append(SEPARATOR);

           

else if ((i !=0 && !preCharIsUpperCase) && curreCharIsUpperCase)



sb.append(SEPARATOR);

           

sb.append(Character.toLowerCase(c));

       

return sb.toString();

   

/**

    * 是否包含字符串

    *

    * @param str 验证字符串

    * @param strs 字符串组

    * @return 包含返回true

*/

    public static boolean inStringIgnoreCase(String str, String... strs)



if (str !=null && strs !=null)



for (String s : strs)



if (str.equalsIgnoreCase(trim(s)))



return true;

               





return false;

   

/**

    * 将下划线大写方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。 例如:HELLO_WORLD->HelloWorld

*

    * @param name 转换前的下划线大写方式命名的字符串

    * @return 转换后的驼峰式命名的字符串

    */

    public static StringconvertToCamelCase(String name)



StringBuilder result =new StringBuilder();

        // 快速检查

        if (name ==null || name.isEmpty())



// 没必要转换

            return "";

       

else if (!name.contains("_"))



// 不含下划线,仅将首字母大写

            return name.substring(0, 1).toUpperCase() + name.substring(1);

       

// 用下划线将原始字符串分割

        String[] camels = name.split("_");

        for (String camel : camels)



// 跳过原始字符串中开头、结尾的下换线或双重下划线

            if (camel.isEmpty())



continue;

           

// 首字母大写

            result.append(camel.substring(0, 1).toUpperCase());

            result.append(camel.substring(1).toLowerCase());

       

return result.toString();

   

/**

    * 驼峰式命名法 例如:user_name->userName

*/

    public static StringtoCamelCase(String s)



if (s ==null)



return null;

       

s = s.toLowerCase();

        StringBuilder sb =new StringBuilder(s.length());

        boolean upperCase =false;

        for (int i =0; i < s.length(); i++)



char c = s.charAt(i);

            if (c ==SEPARATOR)



upperCase =true;

           

else if (upperCase)



sb.append(Character.toUpperCase(c));

                upperCase =false;

           

else

           

sb.append(c);

           



return sb.toString();

   

@SuppressWarnings("unchecked")

public static T cast(Object obj)



return (T) obj;

   

StringUtils工具类常用方法汇总

参考技术A     1.StringUtils.isBlank(String str) 是否为空,空格字符为true

    2.StringUtils.isNotBlank(String str) 是否为非空,空格字符为false

    3.StringUtils.isEmpty(String str) 是否为空,空格字符为false

    4.StringUtils.isNotEmpty(String str) 是否为非空,空格字符为true

    5.StringUtils.stripToNull(String str) 去除字符串两端的空白符,空字符串、null 返回null

    6.StringUtils.stripToEmpty(String str) 去除字符串两端的空白符,空字符串、null 返回""

    7.StringUtils.strip(String str, String stripChars) 去掉str两端的在stripChars中的字符

    8.StringUtils.trim(String str)去除字符串两端的控制符,空字符串、null 返回 null

    9.StringUtils.trimToEmpty(String str) 去除字符串两端的控制符,空字符串、null 返回""

    10.StringUtils.stripStart (String str,String stripChars) 去除str 前端在stripChars中的字符

    11.StringUtils.stripEnd (String str,String stripChars) 去除str 后端在stripChars中的字符

    12.StringUtils.equals(String str1,String str2) 比较两个字符串是否相等,如果两个均为空则认为相等

    13.StringUtils.indexOf(String str,char searchChar) 返回searchChar 在字符串中第一次出现的位置,如果没找到则返回 -1,如果str 为null 或者 "",也返回-1

    14.StringUtils.indexOf(String str,char searchChar,int startPos) 返回字符searchChar从startPos开始在字符串str中第一次出现的位置。

    15.StringUtils.contains(String str,char searchChar) str中是否包含字符searchChar

    String str1 = "";

    String str2 = "";

    String str3 = "aac";

    if(org.apache.commons.lang3.StringUtils.contains(str1, str2))

    System.out.println(true);

    else

    System.out.println(false);

   

    if(org.apache.commons.lang3.StringUtils.contains(str1, str3))

    System.out.println(true);

    else

    System.out.println(false);

   

    if(org.apache.commons.lang3.StringUtils.contains(str3, str1))

    System.out.println(true);

    else

    System.out.println(false);

   

   16.StringUtils.containsIgnoreCase(String str,String searchStr) str中是否包含字符searchChar,不区分大小写

    17.StringUtils.indexOfAny(String str, char[] searchChars) 找出字符数组searchChars中的字符第一次出现在字符串str中的位置。 如果字符数组中的字符都不在字符串中,则返回-1 ,如果字符串为null或"",则返回-1 

    18.StringUtils.subString(String str,int start) 从start 开始,包含start 那个字符,得到字符串str 的子串,如果start为负数,则从后面开始数起。如果str 为null 或者 "" 则返回其本身

    19.StringUtils.subStringBefore(String str,String separator) 得到字符串separator第一次出现前的子串。不包含那个字符,如果str 为null 或者 "" 则返回其本身。

    20.StringUtils.subStringAfter(String str,String separator) 得到字符串separator第一次出现后的子串,不包含那个字符,如果 str 为null,或者"",则返回其本身

    21.StringUtils.subString(String str,int start,int end) 截取start到end的字符串

    22.StringUtils.left(String str,int len) 得到字符串str从左边数len长度的子串,如果str 为null 或者 "",则返回其本身,如果len小于0,则返回""

    23.StringUtils.right(String str,int len)得到字符串str从右边数len长度的子串

    24.StringUtils.mid(String str,int pos,int len) 得到字符串str从pos开始len长度的子串,pos小于0,则设为0。

    25.StringUtils.split(String str,char c) 按照 char c 拆分字符串

    26.StringUtils.join(Object[] arrey)把数组中的元素连接成一个字符串返回

    27.StringUtils.join(Object[] arrey,char c) 把数组中的元素拼接成一个字符串返回,把分隔符 c 也带上

    28.StringUtils.swapCase(String str) 字符串中的大写转小写,小写转换为大写

    29.StringUtils.deleteWhitespace(String str) 删除字符串中的所有空白符,包括转义字符

    30.StringUtils.remove(String str,char remove) 去掉字符串str中所有包含remove的部分,然后返回

    31.StringUtils.replace(String str,String reql,String with) 在字符串text中用with代替repl,替换所有

    32.StringUtils.replaceChars(String str,char old,char new) 在字符串中 new 字符代替 old 字符

    33.StringUtils.removeStart(String str,String remove) 如果字符串str是以remove开始,则去掉这个开始,然后返回,否则返回原来的串

    34.StringUtils.removeEnd(String str,String remove) 如果字符串str是以字符串remove结尾,则去掉这个结尾,然后返回,否则返回原来的串。

    35.StringUtils.overlay(String str,String new,int start,int end) 用字符串new 覆盖字符串str从start 到 end 之间的串

    36.StringUtils.chop(String str) 去掉字符串的最后一个字符,比如/r/n

    37.StringUtils.repeat(String str,int repart) 重复字符串repeat次

    38.StringUtils.rightPad(String str,int size,String padStr) size长度的字符串,如果不够用padStr补齐

    39.StringUtils.leftPad(String str,int size,String padStr)同上

    40.StringUtils.center(String str,int size)产生一个字符串,长度等于size,str位于新串的中心

以上是关于常用StringUtils工具方法的主要内容,如果未能解决你的问题,请参考以下文章

StringUtils工具类的常用方法

StringUtils工具类常用方法

StringUtils工具类常用方法汇总2(截取去除空白包含查询索引)

StringUtils工具类的常用方法

StringUtils工具类的常用方法

StringUtils工具类常用方法