package com.nuiiqk.util;
import java.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import cn.hutool.core.text.StrFormatter;
public class StringUtils extends org.apache.commons.lang3.StringUtils {
public static Logger log = LoggerFactory.getLogger(StringUtils.class);
private static int machineId = 1;
private static final String NULLSTR = "";
private static final char SEPARATOR = '_';
public static long getLong(String str, Long defaultData) {
Long lnum = defaultData;
if (isEmpty(str)) {
return lnum;
}
try {
lnum = Long.valueOf(str.trim()).longValue();
} catch (NumberFormatException e) {
log.warn("把String 转换为 long======== " + str);
}
return lnum;
}
public static Boolean getBoolean(String str, Boolean defaultData) {
Boolean lnum = defaultData;
if (isEmpty(str)) {
return lnum;
}
try {
lnum = Boolean.valueOf(str.trim()).booleanValue();
} catch (NumberFormatException e) {
log.warn("把String 转换为 long======== " + str);
}
return lnum;
}
public static int getInt(String str, Integer defaultData) {
int inum = defaultData;
if (isEmpty(str)) {
return inum;
}
try {
inum = Integer.valueOf(str.trim()).intValue();
} catch (NumberFormatException e) {
log.warn("把String转换成int数据========== " + str);
}
return inum;
}
public static double getDouble(String str, Double defaultData) {
double dnum = defaultData;
if (isEmpty(str)) {
return dnum;
}
try {
dnum = Double.valueOf(str.trim()).doubleValue();
} catch (NumberFormatException e) {
log.warn("把String转换成double数据========== " + str);
}
return dnum;
}
public static float getFloat(String str, Float defaultData) {
float dnum = defaultData;
if (isEmpty(str)) {
return dnum;
}
try {
dnum = Float.valueOf(str.trim()).floatValue();
} catch (NumberFormatException e) {
log.warn("把String转换成float数据========== " + str);
}
return dnum;
}
public static String[] split(String str, String code) {
String[] split;
if (isEmpty(str)) {
split = null;
} else {
split = str.split(code);
}
return split;
}
public static List<Long> changeStringToLong(String str, String code) {
String[] split = split(str, code);
List<Long> lnums = new ArrayList<>();
for (String s : split) {
if (!isEmpty(s)) {
long lnum = getLong(s, 0l);
lnums.add(lnum);
}
}
return lnums;
}
public static List<String> changeStringToString(String str, String code) {
String[] split = split(str, code);
List<String> lnums = new ArrayList<>();
for (String s : split) {
lnums.add(s);
}
return lnums;
}
public static List<Integer> changeStringToInteger(String str, String code) {
String[] split = split(str, code);
List<Integer> inums = new ArrayList<>();
for (String s : split) {
int inum = getInt(s, 0);
inums.add(inum);
}
return inums;
}
public static String getOrderNumberByUUID() {
int hashCodeV = UUID.randomUUID().toString().hashCode();
if (hashCodeV < 0) {
hashCodeV = -hashCodeV;
}
String orderNumber = machineId + String.format("%015d", hashCodeV);
return orderNumber;
}
public static String getOutRefundNoByUUID() {
int hashCodeV = UUID.randomUUID().toString().hashCode();
if (hashCodeV < 0) {
hashCodeV = -hashCodeV;
}
String out_refund_no = "BACK" + machineId + String.format("%015d", hashCodeV);
return out_refund_no;
}
public static String getUUID() {
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
log.debug("获取32位的UUID的调试日志-->>" + uuid);
return uuid;
}
public static String listToString(List<Long> list, String code) {
String s = "";
if (list == null || list.size() <= 0) {
return s;
}
for (Long l : list) {
if (l.longValue() > 0) {
s = s + l + code;
}
}
return s;
}
public static String listTranformString(List<String> list, String code) {
String s = "";
if (list == null || list.size() <= 0) {
return s;
}
s = String.join(code, list);
return s;
}
public static boolean isNotBlank(String str) {
return !StringUtils.isBlank(str);
}
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;
}
public static boolean isNumeric(String str) {
try {
Integer.valueOf(str);
return true;
} catch (Exception e) {
return false;
}
}
public static boolean contains(String str, String searchChar) {
if (isEmpty(str)) {
return false;
}
return str.indexOf(searchChar) >= 0;
}
public static Boolean isCommentSpam(String content) {
if (content == null) {
return true;
}
char[] chars = content.toCharArray();
Integer maxCount = 4;
for (int a = 0; a < chars.length; a++) {
Integer count = 1;
for (int b = a; b < chars.length - 1; b++) {
if (chars[b + 1] == chars[b]) {
count++;
if (count >= maxCount) {
return true;
}
continue;
} else {
break;
}
}
}
return false;
}
public static <T> T nvl(T value, T defaultValue) {
return value != null ? value : defaultValue;
}
public static boolean isEmpty(Collection<?> coll) {
return isNull(coll) || coll.isEmpty();
}
public static boolean isNotEmpty(Collection<?> coll) {
return !isEmpty(coll);
}
public static boolean isEmpty(Object[] objects) {
return isNull(objects) || (objects.length == 0);
}
public static boolean isNotEmpty(Object[] objects) {
return !isEmpty(objects);
}
public static boolean isEmpty(Map<?, ?> map) {
return isNull(map) || map.isEmpty();
}
public static boolean isNotEmpty(Map<?, ?> map) {
return !isEmpty(map);
}
public static boolean isEmpty(String str) {
return isNull(str) || NULLSTR.equals(str.trim());
}
public static boolean isNotEmpty(String str) {
return !isEmpty(str);
}
public static boolean isNull(Object object) {
return object == null;
}
public static boolean isNotNull(Object object) {
return !isNull(object);
}
public static boolean isArray(Object object) {
return isNotNull(object) && object.getClass().isArray();
}
public static String trim(String str) {
return (str == null ? "" : str.trim());
}
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);
}
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 format(String template, Object... params) {
if (isEmpty(params) || isEmpty(template)) {
return template;
}
return StrFormatter.format(template, params);
}
public static final Set<String> str2Set(String str, String sep) {
return new HashSet<String>(str2List(str, sep, true, false));
}
public static final List<String> str2List(String str, String sep, boolean filterBlank, boolean trim) {
List<String> list = new ArrayList<String>();
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(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();
}
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;
}
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();
}
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(c));
upperCase = false;
} else {
sb.append(c);
}
}
return sb.toString();
}
@SuppressWarnings("unchecked")
public static <T> T cast(Object obj) {
return (T)obj;
}
public static String getUuidNoLine() {
return UUID.randomUUID().toString().replaceAll("-", "");
}
public static String getUuidNoLineWithTime() {
return getUuidWithLineAndTime().replaceAll("-", "");
}
public static String getUuidWithLine() {
return UUID.randomUUID().toString();
}
public static String getUuidWithLineAndTime() {
return UUID.randomUUID().toString() + "-" + System.currentTimeMillis();
}
public static int parseInteger(String str) {
int result = 0;
if (isNumeric(str)) {
result = Integer.parseInt(str);
}
return result;
}
public static double parseDouble(String str) {
double result = 0.0;
if (isNoneBlank(str) && isNumeric(str.replace(".", ""))) {
result = Double.parseDouble(str);
}
return result;
}
public static boolean contains(String[] strs, String str) {
return Arrays.asList(strs).contains(str);
}
}