一、判空(Empty checks)
1。判断字符串是否为空(为NULL或者为"")
public static boolean isEmpty(String str) { return str == null || str.length() == 0; }
2.相应的,有检验字符串不为空的
public static boolean isNotEmpty(String str) { return !StringUtils.isEmpty(str); }
3.判断字符串是否为空或者全部为空白字符组成(为NULL或者""或者" ")
public static boolean isBlank(String str) { int strLen; if (str == null || (strLen = str.length()) == 0) { return true; } for (int i = 0; i < strLen; i++) { if ((Character.isWhitespace(str.charAt(i)) == false)) { return false; } } return true; }
4.相应的,判断是否非空,非空白字符组成
public static boolean isNotBlank(String str) { return !StringUtils.isBlank(str); }
二、去除字符串两端空格(Trim)
1.去除字符串两端空格trim
public static String trim(String str) { return str == null ? null : str.trim(); }
2.空字符串转化为NULL
public static String trimToNull(String str) { String ts = trim(str); return isEmpty(ts) ? null : ts; }
3.NULL转化为空字符串
public static String trimToEmpty(String str) { return str == null ? EMPTY : str.trim(); }
三、剥离指定字符(Stripping)
1.剥离首尾空白字符,字符串为NULL时,返回NULL
public static String strip(String str) { return strip(str, null); }
2.剥离首尾空白字符,如果字符串全为空白或为NULL,则返回NULL
public static String stripToNull(String str) { if (str == null) { return null; } str = strip(str, null); return str.length() == 0 ? null : str; }
3.剥离首尾空白字符,如果字符串为全空白或者NULL,返回""
public static String stripToEmpty(String str) { return str == null ? EMPTY : strip(str, null); }
4.剥离首尾指定字符,如:StringUtils.strip(" abcyx", "xyz") = " abc"
public static String strip(String str, String stripChars) { if (isEmpty(str)) { return str; } str = stripStart(str, stripChars); return stripEnd(str, stripChars); }
5.剥离字符串首指定字符
public static String stripStart(String str, String stripChars) { int strLen; if (str == null || (strLen = str.length()) == 0) { return str; } int start = 0; if (stripChars == null) { while ((start != strLen) && Character.isWhitespace(str.charAt(start))) { start++; } } else if (stripChars.length() == 0) { return str; } else { while ((start != strLen) && (stripChars.indexOf(str.charAt(start)) != -1)) { start++; } } return str.substring(start); }
6.剥离字符串尾指定字符
public static String stripEnd(String str, String stripChars) { int end; if (str == null || (end = str.length()) == 0) { return str; } if (stripChars == null) { while ((end != 0) && Character.isWhitespace(str.charAt(end - 1))) { end--; } } else if (stripChars.length() == 0) { return str; } else { while ((end != 0) && (stripChars.indexOf(str.charAt(end - 1)) != -1)) { end--; } } return str.substring(0, end); }
四、剥离数组中指定字符(StripAll)
1.剥离数组中空白字符
public static String[] stripAll(String[] strs) { return stripAll(strs, null); }
2.剥离数组中指定字符
public static String[] stripAll(String[] strs, String stripChars) { int strsLen; if (strs == null || (strsLen = strs.length) == 0) { return strs; } String[] newArr = new String[strsLen]; for (int i = 0; i < strsLen; i++) { newArr[i] = strip(strs[i], stripChars); } return newArr; }
五、等于(Equals)
1.equals
public static boolean equals(String str1, String str2) { return str1 == null ? str2 == null : str1.equals(str2); }
2.equalsIgnoreCase
public static boolean equalsIgnoreCase(String str1, String str2) { return str1 == null ? str2 == null : str1.equalsIgnoreCase(str2); }
六、定位(IndexOf)
1.indexOf
public static int indexOf(String str, char searchChar) { if (isEmpty(str)) { return -1; } return str.indexOf(searchChar); }
2.指定起始位置寻址
public static int indexOf(String str, char searchChar, int startPos) { if (isEmpty(str)) { return -1; } return str.indexOf(searchChar, startPos); }
3.增加对NULL定位的处理
public static int indexOf(String str, String searchStr) { if (str == null || searchStr == null) { return -1; } return str.indexOf(searchStr); }
4.找出指定字符串指定次序的位置
public static int ordinalIndexOf(String str, String searchStr, int ordinal) { return ordinalIndexOf(str, searchStr, ordinal, false); }
private static int ordinalIndexOf(String str, String searchStr, int ordinal, boolean lastIndex) { if (str == null || searchStr == null || ordinal <= 0) { return INDEX_NOT_FOUND; } if (searchStr.length() == 0) { return lastIndex ? str.length() : 0; } int found = 0; int index = lastIndex ? str.length() : INDEX_NOT_FOUND; do { if(lastIndex) { index = str.lastIndexOf(searchStr, index - 1); } else { index = str.indexOf(searchStr, index + 1); } if (index < 0) { return index; } found++; } while (found < ordinal); return index; }
5.指定位置开始寻址
public static int indexOf(String str, String searchStr, int startPos) { if (str == null || searchStr == null) { return -1; } // JDK1.2/JDK1.3 have a bug, when startPos > str.length for "", hence if (searchStr.length() == 0 && startPos >= str.length()) { return str.length(); } return str.indexOf(searchStr, startPos); }
6.无视字母大小写寻址
public static int indexOfIgnoreCase(String str, String searchStr) { return indexOfIgnoreCase(str, searchStr, 0); }
7.从指定位置开始,无视大小写定位
public static int indexOfIgnoreCase(String str, String searchStr, int startPos) { if (str == null || searchStr == null) { return -1; } if (startPos < 0) { startPos = 0; } int endLimit = (str.length() - searchStr.length()) + 1; if (startPos > endLimit) { return -1; } if (searchStr.length() == 0) { return startPos; } for (int i = startPos; i < endLimit; i++) { if (str.regionMatches(true, i, searchStr, 0, searchStr.length())) { return i; } } return -1; }
七、LastIndexOf
1.LastIndexOf
public static int lastIndexOf(String str, char searchChar) { if (isEmpty(str)) { return -1; } return str.lastIndexOf(searchChar); }
2.指定起始位,寻找最后一个指定字符定位
public static int lastIndexOf(String str, char searchChar, int startPos) { if (isEmpty(str)) { return -1; } return str.lastIndexOf(searchChar, startPos); }
3.LastIndexOf,增加对NULL的处理
public static int lastIndexOf(String str, String searchStr) { if (str == null || searchStr == null) { return -1; } return str.lastIndexOf(searchStr); }
4.指定次序,指定字符串的倒数顺序定位
public static int lastOrdinalIndexOf(String str, String searchStr, int ordinal) { return ordinalIndexOf(str, searchStr, ordinal, true); }
5.LastIndexOf,指定字符开始
public static int lastIndexOf(String str, String searchStr, int startPos) { if (str == null || searchStr == null) { return -1; } return str.lastIndexOf(searchStr, startPos); }
6.无视字母大小写,倒序
public static int lastIndexOfIgnoreCase(String str, String searchStr) { if (str == null || searchStr == null) { return -1; } return lastIndexOfIgnoreCase(str, searchStr, str.length()); }
public static int lastIndexOfIgnoreCase(String str, String searchStr, int startPos) { if (str == null || searchStr == null) { return -1; } if (startPos > (str.length() - searchStr.length())) { startPos = str.length() - searchStr.length(); } if (startPos < 0) { return -1; } if (searchStr.length() == 0) { return startPos; } for (int i = startPos; i >= 0; i--) { if (str.regionMatches(true, i, searchStr, 0, searchStr.length())) { return i; } } return -1; }
八、包含(Contains)
1.判断是否包含某字符,为NULL或者为""时返回false
public static boolean contains(String str, char searchChar) { if (isEmpty(str)) { return false; } return str.indexOf(searchChar) >= 0; }
2.判断是否包含某字符串,为NULL时返回false
public static boolean contains(String str, String searchStr) { if (str == null || searchStr == null) { return false; } return str.indexOf(searchStr) >= 0; }
3.判断是否包含某字符串,不区分大小写
public static boolean containsIgnoreCase(String str, String searchStr) { if (str == null || searchStr == null) { return false; } int len = searchStr.length(); int max = str.length() - len; for (int i = 0; i <= max; i++) { if (str.regionMatches(true, i, searchStr, 0, len)) { return true; } } return false; }
九、指定字符在字符串中的位置(IndexOfAny chars)
1.查找第一个指定字符数组中字符的位置,源字符串为空或者需要查找的字符为空,返回-1
public static int indexOfAny(String str, char[] searchChars) { if (isEmpty(str) || ArrayUtils.isEmpty(searchChars)) { return -1; } for (int i = 0; i < str.length(); i++) { char ch = str.charAt(i); for (int j = 0; j < searchChars.length; j++) { if (searchChars[j] == ch) { return i; } } } return -1; }
2.查找指定字符串中字符位置
public static int indexOfAny(String str, String searchChars) { if (isEmpty(str) || isEmpty(searchChars)) { return -1; } return indexOfAny(str, searchChars.toCharArray()); }
十、判断是否包含某字符集中字符(ContainsAny)
1.Checks if the String contains any character in the given set of characters.
public static boolean containsAny(String str, char[] searchChars) { if (str == null || str.length() == 0 || searchChars == null || searchChars.length == 0) { return false; } for (int i = 0; i < str.length(); i++) { char ch = str.charAt(i); for (int j = 0; j < searchChars.length; j++) { if (searchChars[j] == ch) { return true; } } } return false; }
2.判断是否包含某字符集中字符
public static boolean containsAny(String str, String searchChars) { if (searchChars == null) { return false; } return containsAny(str, searchChars.toCharArray()); }
十一、不在指定字符集中的字符位置查询(IndexOfAnyBut chars)
1.不在指定字符集中字符位置查询,如果全都在searchChars,或者两参数之一为空,返回-1
public static int indexOfAnyBut(String str, char[] searchChars) { if (isEmpty(str) || ArrayUtils.isEmpty(searchChars)) { return -1; } outer : for (int i = 0; i < str.length(); i++) { char ch = str.charAt(i); for (int j = 0; j < searchChars.length; j++) { if (searchChars[j] == ch) { continue outer; } } return i; } return -1; }
public static int indexOfAnyBut(String str, String searchChars) { if (isEmpty(str) || isEmpty(searchChars)) { return -1; } for (int i = 0; i < str.length(); i++) { if (searchChars.indexOf(str.charAt(i)) < 0) { return i; } } return -1; }
十二、判断是否包含指定字符以为的字符(ContainsOnly)
1.判断是否只包含指定字符的字符,如果包含,返回TRUE,如果不包含,返回false
public static boolean containsOnly(String str, char[] valid) { // All these pre-checks are to maintain API with an older version if ((valid == null) || (str == null)) { return false; } if (str.length() == 0) { return true; } if (valid.length == 0) { return false; } return indexOfAnyBut(str, valid) == -1; }
2.判断字符串是否只包含指定字符
public static boolean containsOnly(String str, String validChars) { if (str == null || validChars == null) { return false; } return containsOnly(str, validChars.toCharArray()); }
十三、检查字符串是否不包括指定字符(ContainsNone)
1.检查字符串是否不包括指定字符,参数为空或者不包含指定字符,则返回true,否则返回false
public static boolean containsNone(String str, char[] invalidChars) { if (str == null || invalidChars == null) { return true; } int strSize = str.length(); int validSize = invalidChars.length; for (int i = 0; i < strSize; i++) { char ch = str.charAt(i); for (int j = 0; j < validSize; j++) { if (invalidChars[j] == ch) { return false; } } } return true; }
public static boolean containsNone(String str, String invalidChars) { if (str == null || invalidChars == null) { return true; } return containsNone(str, invalidChars.toCharArray()); }
十四、找出指定字符串在字符串中的位置(IndexOfAny strings)
1.Find the first index of any of a set of potential substrings.
public static int indexOfAny(String str, String[] searchStrs) { if ((str == null) || (searchStrs == null)) { return -1; } int sz = searchStrs.length; // String's can't have a MAX_VALUEth index. int ret = Integer.MAX_VALUE; int tmp = 0; for (int i = 0; i < sz; i++) { String search = searchStrs[i]; if (search == null) { continue; } tmp = str.indexOf(search); if (tmp == -1) { continue; } if (tmp < ret) { ret = tmp; } } return (ret == Integer.MAX_VALUE) ? -1 : ret; }
2.Find the latest index of any of a set of potential substrings.
public static int lastIndexOfAny(String str, String[] searchStrs) { if ((str == null) || (searchStrs == null)) { return -1; } int sz = searchStrs.length; int ret = -1; int tmp = 0; for (int i = 0; i < sz; i++) { String search = searchStrs[i]; if (search == null) { continue; } tmp = str.lastIndexOf(search); if (tmp > ret) { ret = tmp; } } return ret; }
相关推荐
### StringUtils 概述 `StringUtils` 是一个针对 `java.lang.String` 类型对象进行操作的工具类,它作为 JDK 内置 `String` 类方法的一种补充。与原生的 `String` 类不同的是,`StringUtils` 提供了更加丰富的字符...
《StringUtils的深度解析与应用》 在Java编程中,处理字符串是常见的任务,Apache Commons Lang库中的StringUtils类提供了丰富的字符串操作方法,极大地提高了开发效率。本文将深入探讨StringUtils的几个重要功能,...
9. **重复字符串**:`StringUtils.repeat(String str, int repeat)` 用于创建一个字符串,其中包含指定次数的原始字符串。 10. **子串截取**:`StringUtils.substring(String str, int beginIndex, int endIndex)` ...
9. **重复和填充**:`repeat`方法用于创建一个重复的字符串,`leftPad`和`rightPad`则可以在字符串两侧填充指定字符以达到指定长度。 10. **删除子串**:`removeStart`和`removeEnd`可以从字符串的开始或结束处移除...
Java开发中中经常使用的Java工具类分享,工作中用得上,直接拿来使用,不用重复造轮子。
StringUtils.java StringUtils.java
org.apache.commons.lang3.StringUtils的jar包,判断字符串为空
`StringUtils` API 是 Apache Commons Lang 库中的一个实用工具类,专门为处理 `java.lang.String` 对象提供了丰富的静态方法。这个库是对 Java 标准库中的 `String` 类方法的一个扩展,尤其在处理 `null` 和空白...
`StringUtils`工具类是Java开发中非常常用的一个类库,主要提供了一系列静态方法来处理字符串。这个工具类在处理字符串的常见操作时提供了很大的便利,比如数组转字符串、空值检测、非空处理以及空格处理等。接下来...
`StringUtils`是Apache Commons Lang库中的一个核心工具类,它提供了大量的静态方法,用于处理字符串。这个类在Java开发中非常常见,因为它弥补了Java标准库中对字符串操作的不足。`StringUtils`类包含了多种字符串...
12. **重复生成**:`StringUtils.repeat()` 方法可以生成重复的字符串。 在实际使用 `common-lang3.jar` 时,你可以通过导入 `org.apache.commons.lang3.StringUtils` 类并调用相应的方法来提升字符串处理的效率和...
### StringUtils函数全集详解 #### 一、简介 在Java编程语言中,处理字符串是非常常见的需求之一。为了方便开发者高效地进行字符串操作,Apache Commons Lang库提供了一个强大的工具类——`StringUtils`。此工具类...
\n\t\f\r") = "" //所有控制字符都被移除 StringUtils.trim("bob") = "bob" StringUtils.trim(" bob ") = "bob" 6. public static String trimToNull(String str) 和 trim() 类似,但结果为 null 时返回 null,而...
继承了org.apache.commons.lang3.StringUtils工具类,加入了部分常用方法,使用时直接添加到项目的公共utils下,同时在pom.xml加入依赖: <!-- ...
`StringUtils`是Apache Commons Lang库中的一个核心工具类,它提供了大量的静态方法,用于处理字符串。这个库在Java开发中非常常见,因为它弥补了Java标准库中对字符串操作的不足。`StringUtils`类包含了多种实用...