最后
-
@param object 对象
-
@return true:是数组 false:不是数组
*/
public static boolean isArray(Object object)
{
return isNotNull(object) && object.getClass().isArray();
}
/**
- 去空格
*/
public static String trim(String str)
{
return (str == null ? “” : str.trim());
}
/**
-
截取字符串
-
@param str 字符串
-
@param start 开始
-
@return 结果
*/
public static String substring(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 String substring(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 String format(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 Set str2Set(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 List str2List(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 String toUnderScoreCase(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©;
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©);
}
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 String convertToCamelCase(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 String toCamelCase(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©);
upperCase = false;
}
else
{
sb.append©;
}
}
return sb.toString();
}
@SuppressWarnings(“unchecked”)
public static T cast(Object obj)
{
return (T) obj;
}
}
字符串格式化类 StrFormatter.java
/**
-
字符串格式化
-
@author pricre
*/
public class StrFormatter
{
public static final String EMPTY_JSON = “{}”;
public static final char C_BACKSLASH = ‘\’;
public static final char C_DELIM_START = ‘{’;
public static final char C_DELIM_END = ‘}’;
最后
这份《“java高分面试指南”-25分类227页1000+题50w+字解析》同样可分享给有需要的朋友,感兴趣的伙伴们可挑战一下自我,在不看答案解析的情况,测试测试自己的解题水平,这样也能达到事半功倍的效果!(好东西要大家一起看才香)
re
*/
public class StrFormatter
{
public static final String EMPTY_JSON = “{}”;
public static final char C_BACKSLASH = ‘\’;
public static final char C_DELIM_START = ‘{’;
public static final char C_DELIM_END = ‘}’;
最后
这份《“java高分面试指南”-25分类227页1000+题50w+字解析》同样可分享给有需要的朋友,感兴趣的伙伴们可挑战一下自我,在不看答案解析的情况,测试测试自己的解题水平,这样也能达到事半功倍的效果!(好东西要大家一起看才香)
[外链图片转存中…(img-hhQstebQ-1715352830485)]
[外链图片转存中…(img-4JmEX81o-1715352830485)]