mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
enhance StrUtil
This commit is contained in:
parent
58aba1ab93
commit
1a74642736
@ -11,6 +11,7 @@
|
|||||||
* 【core 】 XmlUtil.cleanComment(pr#191@Gitee)
|
* 【core 】 XmlUtil.cleanComment(pr#191@Gitee)
|
||||||
* 【core 】 ArrayUtil.unWrap增加默认值(pr#1149@Github)
|
* 【core 】 ArrayUtil.unWrap增加默认值(pr#1149@Github)
|
||||||
* 【core 】 ArrayUtil.indexOf修改double的equals判断(pr#1147@Github)
|
* 【core 】 ArrayUtil.indexOf修改double的equals判断(pr#1147@Github)
|
||||||
|
* 【core 】 优化StrUtil中部分参数校验以及逻辑处理(pr#1144@Github)
|
||||||
|
|
||||||
### Bug修复
|
### Bug修复
|
||||||
* 【core 】 解决农历判断节日未判断大小月导致的问题(issue#I1XHSF@Gitee)
|
* 【core 】 解决农历判断节日未判断大小月导致的问题(issue#I1XHSF@Gitee)
|
||||||
|
@ -34,53 +34,95 @@ public class StrUtil {
|
|||||||
|
|
||||||
public static final int INDEX_NOT_FOUND = -1;
|
public static final int INDEX_NOT_FOUND = -1;
|
||||||
|
|
||||||
/** 字符常量:空格符 ' ' */
|
/**
|
||||||
|
* 字符常量:空格符 ' '
|
||||||
|
*/
|
||||||
public static final char C_SPACE = CharUtil.SPACE;
|
public static final char C_SPACE = CharUtil.SPACE;
|
||||||
/** 字符常量:制表符 \t */
|
/**
|
||||||
|
* 字符常量:制表符 \t
|
||||||
|
*/
|
||||||
public static final char C_TAB = CharUtil.TAB;
|
public static final char C_TAB = CharUtil.TAB;
|
||||||
/** 字符常量:点 . */
|
/**
|
||||||
|
* 字符常量:点 .
|
||||||
|
*/
|
||||||
public static final char C_DOT = CharUtil.DOT;
|
public static final char C_DOT = CharUtil.DOT;
|
||||||
/** 字符常量:斜杠 / */
|
/**
|
||||||
|
* 字符常量:斜杠 /
|
||||||
|
*/
|
||||||
public static final char C_SLASH = CharUtil.SLASH;
|
public static final char C_SLASH = CharUtil.SLASH;
|
||||||
/** 字符常量:反斜杠 \ */
|
/**
|
||||||
|
* 字符常量:反斜杠 \
|
||||||
|
*/
|
||||||
public static final char C_BACKSLASH = CharUtil.BACKSLASH;
|
public static final char C_BACKSLASH = CharUtil.BACKSLASH;
|
||||||
/** 字符常量:回车符 \r */
|
/**
|
||||||
|
* 字符常量:回车符 \r
|
||||||
|
*/
|
||||||
public static final char C_CR = CharUtil.CR;
|
public static final char C_CR = CharUtil.CR;
|
||||||
/** 字符常量:换行符 \n */
|
/**
|
||||||
|
* 字符常量:换行符 \n
|
||||||
|
*/
|
||||||
public static final char C_LF = CharUtil.LF;
|
public static final char C_LF = CharUtil.LF;
|
||||||
/** 字符常量:下划线 _ */
|
/**
|
||||||
|
* 字符常量:下划线 _
|
||||||
|
*/
|
||||||
public static final char C_UNDERLINE = CharUtil.UNDERLINE;
|
public static final char C_UNDERLINE = CharUtil.UNDERLINE;
|
||||||
/** 字符常量:逗号 , */
|
/**
|
||||||
|
* 字符常量:逗号 ,
|
||||||
|
*/
|
||||||
public static final char C_COMMA = CharUtil.COMMA;
|
public static final char C_COMMA = CharUtil.COMMA;
|
||||||
/** 字符常量:花括号(左) { */
|
/**
|
||||||
|
* 字符常量:花括号(左) {
|
||||||
|
*/
|
||||||
public static final char C_DELIM_START = CharUtil.DELIM_START;
|
public static final char C_DELIM_START = CharUtil.DELIM_START;
|
||||||
/** 字符常量:花括号(右) } */
|
/**
|
||||||
|
* 字符常量:花括号(右) }
|
||||||
|
*/
|
||||||
public static final char C_DELIM_END = CharUtil.DELIM_END;
|
public static final char C_DELIM_END = CharUtil.DELIM_END;
|
||||||
/** 字符常量:中括号(左) [ */
|
/**
|
||||||
|
* 字符常量:中括号(左) [
|
||||||
|
*/
|
||||||
public static final char C_BRACKET_START = CharUtil.BRACKET_START;
|
public static final char C_BRACKET_START = CharUtil.BRACKET_START;
|
||||||
/** 字符常量:中括号(右) ] */
|
/**
|
||||||
|
* 字符常量:中括号(右) ]
|
||||||
|
*/
|
||||||
public static final char C_BRACKET_END = CharUtil.BRACKET_END;
|
public static final char C_BRACKET_END = CharUtil.BRACKET_END;
|
||||||
/** 字符常量:冒号 : */
|
/**
|
||||||
|
* 字符常量:冒号 :
|
||||||
|
*/
|
||||||
public static final char C_COLON = CharUtil.COLON;
|
public static final char C_COLON = CharUtil.COLON;
|
||||||
/** 字符常量:艾特 @ */
|
/**
|
||||||
|
* 字符常量:艾特 @
|
||||||
|
*/
|
||||||
public static final char C_AT = CharUtil.AT;
|
public static final char C_AT = CharUtil.AT;
|
||||||
|
|
||||||
/** 字符串常量:空格符 ' ' */
|
/**
|
||||||
|
* 字符串常量:空格符 ' '
|
||||||
|
*/
|
||||||
public static final String SPACE = " ";
|
public static final String SPACE = " ";
|
||||||
/** 字符串常量:制表符 \t */
|
/**
|
||||||
|
* 字符串常量:制表符 \t
|
||||||
|
*/
|
||||||
public static final String TAB = " ";
|
public static final String TAB = " ";
|
||||||
/** 字符串常量:点 . */
|
/**
|
||||||
|
* 字符串常量:点 .
|
||||||
|
*/
|
||||||
public static final String DOT = ".";
|
public static final String DOT = ".";
|
||||||
/**
|
/**
|
||||||
* 字符串常量:双点 ..
|
* 字符串常量:双点 ..
|
||||||
* 用途:作为指向上级文件夹的路径 "../path"
|
* 用途:作为指向上级文件夹的路径 "../path"
|
||||||
*/
|
*/
|
||||||
public static final String DOUBLE_DOT = "..";
|
public static final String DOUBLE_DOT = "..";
|
||||||
/** 字符串常量:斜杠 / */
|
/**
|
||||||
|
* 字符串常量:斜杠 /
|
||||||
|
*/
|
||||||
public static final String SLASH = "/";
|
public static final String SLASH = "/";
|
||||||
/** 字符串常量:反斜杠 \ */
|
/**
|
||||||
|
* 字符串常量:反斜杠 \
|
||||||
|
*/
|
||||||
public static final String BACKSLASH = "\\";
|
public static final String BACKSLASH = "\\";
|
||||||
/** 字符串常量:空字符串 "" */
|
/**
|
||||||
|
* 字符串常量:空字符串 ""
|
||||||
|
*/
|
||||||
public static final String EMPTY = "";
|
public static final String EMPTY = "";
|
||||||
/**
|
/**
|
||||||
* 字符串常量:"null"
|
* 字符串常量:"null"
|
||||||
@ -92,45 +134,79 @@ public class StrUtil {
|
|||||||
* 解释:该字符常用于表示 Linux 系统和 MacOS 系统下的文本换行
|
* 解释:该字符常用于表示 Linux 系统和 MacOS 系统下的文本换行
|
||||||
*/
|
*/
|
||||||
public static final String CR = "\r";
|
public static final String CR = "\r";
|
||||||
/** 字符串常量:换行符 \n */
|
/**
|
||||||
|
* 字符串常量:换行符 \n
|
||||||
|
*/
|
||||||
public static final String LF = "\n";
|
public static final String LF = "\n";
|
||||||
/**
|
/**
|
||||||
* 字符串常量:Windows 换行 \r\n
|
* 字符串常量:Windows 换行 \r\n
|
||||||
* 解释:该字符串常用于表示 Windows 系统下的文本换行
|
* 解释:该字符串常用于表示 Windows 系统下的文本换行
|
||||||
*/
|
*/
|
||||||
public static final String CRLF = "\r\n";
|
public static final String CRLF = "\r\n";
|
||||||
/** 字符串常量:下划线 _ */
|
/**
|
||||||
|
* 字符串常量:下划线 _
|
||||||
|
*/
|
||||||
public static final String UNDERLINE = "_";
|
public static final String UNDERLINE = "_";
|
||||||
/** 字符串常量:减号(中划线) - */
|
/**
|
||||||
|
* 字符串常量:减号(中划线) -
|
||||||
|
*/
|
||||||
public static final String DASHED = "-";
|
public static final String DASHED = "-";
|
||||||
/** 字符串常量:逗号 , */
|
/**
|
||||||
|
* 字符串常量:逗号 ,
|
||||||
|
*/
|
||||||
public static final String COMMA = ",";
|
public static final String COMMA = ",";
|
||||||
/** 字符串常量:花括号(左) { */
|
/**
|
||||||
|
* 字符串常量:花括号(左) {
|
||||||
|
*/
|
||||||
public static final String DELIM_START = "{";
|
public static final String DELIM_START = "{";
|
||||||
/** 字符串常量:花括号(右) } */
|
/**
|
||||||
|
* 字符串常量:花括号(右) }
|
||||||
|
*/
|
||||||
public static final String DELIM_END = "}";
|
public static final String DELIM_END = "}";
|
||||||
/** 字符串常量:中括号(左) [ */
|
/**
|
||||||
|
* 字符串常量:中括号(左) [
|
||||||
|
*/
|
||||||
public static final String BRACKET_START = "[";
|
public static final String BRACKET_START = "[";
|
||||||
/** 字符串常量:中括号(右) ] */
|
/**
|
||||||
|
* 字符串常量:中括号(右) ]
|
||||||
|
*/
|
||||||
public static final String BRACKET_END = "]";
|
public static final String BRACKET_END = "]";
|
||||||
/** 字符串常量:冒号 : */
|
/**
|
||||||
|
* 字符串常量:冒号 :
|
||||||
|
*/
|
||||||
public static final String COLON = ":";
|
public static final String COLON = ":";
|
||||||
/** 字符串常量:艾特 @ */
|
/**
|
||||||
|
* 字符串常量:艾特 @
|
||||||
|
*/
|
||||||
public static final String AT = "@";
|
public static final String AT = "@";
|
||||||
|
|
||||||
/** 字符串常量:HTML 空格转义 */
|
/**
|
||||||
|
* 字符串常量:HTML 空格转义
|
||||||
|
*/
|
||||||
public static final String HTML_NBSP = " ";
|
public static final String HTML_NBSP = " ";
|
||||||
/** 字符串常量:HTML And 符转义 & */
|
/**
|
||||||
|
* 字符串常量:HTML And 符转义 &
|
||||||
|
*/
|
||||||
public static final String HTML_AMP = "&";
|
public static final String HTML_AMP = "&";
|
||||||
/** 字符串常量:HTML 双引号转义 " */
|
/**
|
||||||
|
* 字符串常量:HTML 双引号转义 "
|
||||||
|
*/
|
||||||
public static final String HTML_QUOTE = """;
|
public static final String HTML_QUOTE = """;
|
||||||
/** 字符串常量:HTML 单引号转义 ' */
|
/**
|
||||||
|
* 字符串常量:HTML 单引号转义 '
|
||||||
|
*/
|
||||||
public static final String HTML_APOS = "'";
|
public static final String HTML_APOS = "'";
|
||||||
/** 字符串常量:HTML 小于号转义 < */
|
/**
|
||||||
|
* 字符串常量:HTML 小于号转义 <
|
||||||
|
*/
|
||||||
public static final String HTML_LT = "<";
|
public static final String HTML_LT = "<";
|
||||||
/** 字符串常量:HTML 大于号转义 > */
|
/**
|
||||||
|
* 字符串常量:HTML 大于号转义 >
|
||||||
|
*/
|
||||||
public static final String HTML_GT = ">";
|
public static final String HTML_GT = ">";
|
||||||
/** 字符串常量:空 JSON "{}" */
|
/**
|
||||||
|
* 字符串常量:空 JSON "{}"
|
||||||
|
*/
|
||||||
public static final String EMPTY_JSON = "{}";
|
public static final String EMPTY_JSON = "{}";
|
||||||
|
|
||||||
// ------------------------------------------------------------------------ Blank
|
// ------------------------------------------------------------------------ Blank
|
||||||
@ -189,8 +265,7 @@ public class StrUtil {
|
|||||||
*
|
*
|
||||||
* @param obj 对象
|
* @param obj 对象
|
||||||
* @return 如果为字符串是否为空串
|
* @return 如果为字符串是否为空串
|
||||||
*
|
* @see StrUtil#isBlank(CharSequence)
|
||||||
* @see StrUtil#isBlank(CharSequence)
|
|
||||||
* @since 3.3.0
|
* @since 3.3.0
|
||||||
*/
|
*/
|
||||||
public static boolean isBlankIfStr(Object obj) {
|
public static boolean isBlankIfStr(Object obj) {
|
||||||
@ -667,7 +742,7 @@ public class StrUtil {
|
|||||||
* @return 是否开始
|
* @return 是否开始
|
||||||
*/
|
*/
|
||||||
public static boolean startWith(CharSequence str, char c) {
|
public static boolean startWith(CharSequence str, char c) {
|
||||||
if(true == isEmpty(str)) {
|
if (isEmpty(str)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return c == str.charAt(0);
|
return c == str.charAt(0);
|
||||||
@ -677,8 +752,8 @@ public class StrUtil {
|
|||||||
* 是否以指定字符串开头<br>
|
* 是否以指定字符串开头<br>
|
||||||
* 如果给定的字符串和开头字符串都为null则返回true,否则任意一个值为null返回false
|
* 如果给定的字符串和开头字符串都为null则返回true,否则任意一个值为null返回false
|
||||||
*
|
*
|
||||||
* @param str 被监测字符串
|
* @param str 被监测字符串
|
||||||
* @param prefix 开头字符串
|
* @param prefix 开头字符串
|
||||||
* @param ignoreCase 是否忽略大小写
|
* @param ignoreCase 是否忽略大小写
|
||||||
* @return 是否以指定字符串开头
|
* @return 是否以指定字符串开头
|
||||||
* @since 5.4.3
|
* @since 5.4.3
|
||||||
@ -693,14 +768,14 @@ public class StrUtil {
|
|||||||
*
|
*
|
||||||
* @param str 被监测字符串
|
* @param str 被监测字符串
|
||||||
* @param prefix 开头字符串
|
* @param prefix 开头字符串
|
||||||
* @param ignoreCase 是否忽略大小写
|
* @param ignoreCase 是否忽略大小写
|
||||||
* @param ignoreEquals 是否忽略字符串相等的情况
|
* @param ignoreEquals 是否忽略字符串相等的情况
|
||||||
* @return 是否以指定字符串开头
|
* @return 是否以指定字符串开头
|
||||||
* @since 5.4.3
|
* @since 5.4.3
|
||||||
*/
|
*/
|
||||||
public static boolean startWith(CharSequence str, CharSequence prefix, boolean ignoreCase, boolean ignoreEquals) {
|
public static boolean startWith(CharSequence str, CharSequence prefix, boolean ignoreCase, boolean ignoreEquals) {
|
||||||
if (null == str || null == prefix) {
|
if (null == str || null == prefix) {
|
||||||
if(false == ignoreEquals){
|
if (false == ignoreEquals) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return null == str && null == prefix;
|
return null == str && null == prefix;
|
||||||
@ -713,7 +788,7 @@ public class StrUtil {
|
|||||||
isStartWith = str.toString().startsWith(prefix.toString());
|
isStartWith = str.toString().startsWith(prefix.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isStartWith){
|
if (isStartWith) {
|
||||||
return (false == ignoreEquals) || (false == equals(str, prefix, ignoreCase));
|
return (false == ignoreEquals) || (false == equals(str, prefix, ignoreCase));
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -782,7 +857,7 @@ public class StrUtil {
|
|||||||
* @return 是否结尾
|
* @return 是否结尾
|
||||||
*/
|
*/
|
||||||
public static boolean endWith(CharSequence str, char c) {
|
public static boolean endWith(CharSequence str, char c) {
|
||||||
if(true == isEmpty(str)) {
|
if (isEmpty(str)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return c == str.charAt(str.length() - 1);
|
return c == str.charAt(str.length() - 1);
|
||||||
@ -4004,7 +4079,7 @@ public class StrUtil {
|
|||||||
}
|
}
|
||||||
int len = value.length();
|
int len = value.length();
|
||||||
for (int i = 0; i < len; i++) {
|
for (int i = 0; i < len; i++) {
|
||||||
if(false == matcher.match(value.charAt(i))) {
|
if (false == matcher.match(value.charAt(i))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user