package com.dem.ceshiDemo.util;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.util.*;
/**
* 字符串工具类
*/
public class StringUtils {
/** 空字符串 */
private static final String NULLSTR = "";
/** 下划线 */
private static final char SEPARATOR = '_';
/**
* 获取参数不为空值
*
* @param value defaultValue 要判断的value
* @return value 返回值
*/
public static <T> 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()) || "null".equals(str.trim());
}
/**
* * 判断一个字符串是否为非空串
*
* @param str String
* @return true:非空串 false:空串
*/
public static boolean isNotEmpty(String str)
{
return !isEmpty(str);
}
/**
* * 判断一个对象是否为空
*
* @param obj Object
* @return true:为空 false:非空
*/
public static boolean isEmpty(Object obj)
{
return isNull(obj) || NULLSTR.equals(obj);
}
/**
* * 判断一个对象是否为非空
*
* @param obj Object
* @return true:非空串 false:空串
*/
public static boolean isNotEmpty(Object obj)
{
return !isEmpty(obj);
}
/**
* * 判断一个对象是否为空
*
* @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 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);
}
/**
* 下划线转驼峰命名
*/
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(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 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;
}
if (s.indexOf(SEPARATOR) == -1)
{
return s;
}
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> T cast(Object obj)
{
return (T) obj;
}
/**
* 把对象的属性为null的改为""
*/
public static void setFeidValueNotNull (Object obj){
try {
for (Field field: obj.getClass().getDeclaredFields()) {
field.setAccessible(true);
if (field.get(obj) == null){
if (field.getGenericType().toString().equals("class java.lang.String")) {
field.set(obj, "");
}else if (field.getGenericType().toString().equals("class java.lang.Integer")) {
field.set(obj, 0);
}else if (field.getGenericType().toString().equals("class java.lang.Double")) {
field.set(obj, 0.0);
}else if (field.getGenericType().toString().equals("class java.lang.Long")) {
field.set(obj, 0L);
}
}
}
} catch (IllegalArgumentException | IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 功能/function : 根据map中的key值,返回map中对应的value(String类型);
* 流程描述/step :
* 修改记录/revision :
*
*/
public static String getString(Map<?, ?> tmpMap, String key) {
String val = "";
Object a = tmpMap.get(key);
try {
if (a instanceof Integer) {
val = String.valueOf((Integer) a);
} else if (a instanceof String) {
val = (String) a;
} else if (a instanceof Double) {
val = String.valueOf((Double) a);
} else if (a instanceof BigDecimal) {
val = String.valueOf(((BigDecimal) a));
}
} catch (Exception e) {
}
return val;
}
/**
* 按照长度截取字符串
* @param content
* @param length
* @return
*/
public static List<String> splitStr(String content, int length) {
if (content == null) {
return null;
}
int size = content.length() / length;
if (content.length() % length != 0) {
size += 1;
}
List<String> list = new ArrayList<String>();
for (int index = 0; index < size; index++) {
String childStr = substring(content, index * length,
(index + 1) * length);
list.add(childStr);
}
return list;
}
/**
* 根据传递参数 获取几位的随机数
* @return
*/
public static String getRandom(int len) {
int rs = (int) ((Math.random() * 9 + 1) * Math.pow(10, len - 1));
return String.valueOf(rs);
}
/**
* 将字符串数组 转换为 slq条件 in 字符串 格式('a','b')
* @param strArray
* @return
*
* @author Tong's family
* @date 2021年1月23日
*/
public static String toSqlInCondition(String[] strArray ){
StringBuffer buffer=new StringBuffer();
buffer.append("(");
for (int i = 0; i < strArray.length-1; i++) {
buffer.append("'"+strArray[i]+"',");
}
buffer.append("'"+strArray[strArray.length-1]+"'");
buffer.append(")");
return buffer.toString();
}
/**
* 数组转换为字符串,用逗号,隔开
* @param strArray
* @return
*
* @author Tong's family
* @date 2021年1月29日
*/
public static String toArrayString(String[] strArray ){
if (StringUtils.isEmpty(strArray)) {
return "";
}
StringBuffer buffer=new StringBuffer();
for (int i = 0; i < strArray.length-1; i++) {
buffer.append(strArray[i]+",");
}
buffer.append(strArray[strArray.length-1]);
return buffer.toString();
}
/**
* 把map建改为小写
* @param orgMap
* @return
*
* @author ymk
* @since 2019年11月7日上午10:55:45
*/
public static Map<String, Object> transformUpperCase(Map<String, Object> orgMap) {
Map<String, Object> resultMap = new HashMap<>();
if (orgMap == null || orgMap.isEmpty()) {
return resultMap;
}
Set<String> keySet = orgMap.keySet();
for (String key : keySet) {
String newKey = key.toLowerCase();
newKey = newKey.replace("_", "");
if(!StringUtils.isEmpty(orgMap.get(key))) {
resultMap.put(newKey, orgMap.get(key).toString());
}else {
resultMap.put(newKey, "");
}
}
return resultMap;
}
/**
* 把map建null改为""
* @param orgMap
* @return
*
* @author ymk
* @since 2019年11月7日上午10:55:45
*/
public static Map<String, Object> transformNull(Map<String, Object> orgMap) {
Map<String, Object> resultMap = new HashMap<>();
if (orgMap == null || orgMap.isEmpty()) {
return resultMap;
}
Set<String> keySet = orgMap.keySet();
for (String key : keySet) {
if(!StringUtils.isEmpty(orgMap.get(key))) {
resultMap.put(key, orgMap.get(key).toString());
}else {
resultMap.put(key, "");
}
}
return resultMap;
}
/**
* 把当前map建null改为""
* @param orgMap
* @return
*
* @author ymk
* @since 2019年11月7日上午10:55:45
*/
public static void transCurrentformNull(Map<String, Object> orgMap) {
Set<String> keySet = orgMap.keySet();
for (String key : keySet) {
if(!StringUtils.isEmpty(orgMap.get(key))) {
orgMap.put(key, orgMap.get(key).toString());
}else {
orgMap.put(key, "");
}
}
}
/*
以第一个实体类为主,如果第一个的实体类某个字段为空,则会吧第二个实体类的值取过来进行赋值,
如果不为空的则不作改变
*/
@SuppressWarnings("rawtypes")
public static Object combineSydwCore(Object sourceBean, Object targetBean) {
Class sourceBeanClass = sourceBean.getClass();
// Class targetBeanClass = targetBean.getClass();
Field[] sourceFields = sourceBeanClass.getDeclaredFields();
Field[] targetFields = sourceBeanClass.getDeclaredFields();
for (int i = 0; i < sourceFields.length; i++) {
Field sourceField = sourceFields[i];
Field targetField = targetFields[i];
sourceField.setAccessible(true);
targetField.setAccessible(true);
try {
if (!(sourceField.get(sourceBean) == null)) {
targetField.set(targetBean, sourceField.get(sourceBean));
}
} catch (IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
}
return targetBean;
}
/**
* 截取字符串长度,
* @param realname
* @param length
* @return
*/
public static String subStrFirstInfo(String realname, int length) {
String realname1 =null;
char[]
r = realname.toCharArray();
if(r.length ==1){
realname1 = realname;
}
realname1 = realname.replaceFirst(realname.substring(length),"*********");
return realname1;
}
/**
* Java List 集合去除null元素
* @param <T>
* @param oldList
* @return
*/
public static <T> List<T> removeNull(List<? extends T> oldList) {
//使用API方式,使用的是迭代器其本质上还是循环
oldList.removeAll(Collections.singleton(null));
return (List<T>) oldList;
}
/**
* 掉所有空格,包括首尾、中间
* @param resource
* @param ch
* @return
*/
public static String removeSpaceAll(String resource, char ch) {
StringBuffer buffer = new StringBuffer();
int position = 0;
char currentChar;
while (position < resource.length()) {
currentChar = resource.charAt(position++);
if (currentChar != ch){
buffer.append(currentChar);
}
}
return buffer.toString();
}
}
字符串工具类
发布时间 2024-01-10 16:13:15作者: 码小白很犇