com.aiwiown.face.internal.util.StringUtils Maven / Gradle / Ivy
package com.aiwiown.face.internal.util;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 字符串工具类。
*
* @author carver.gu
* @since 1.0, Sep 12, 2009
*/
public abstract class StringUtils {
private static Pattern pattern = Pattern.compile("[\\u4e00-\\u9fa5]");
private StringUtils() {
}
/**
* 检查指定的字符串是否为空。
*
* - SysUtils.isEmpty(null) = true
* - SysUtils.isEmpty("") = true
* - SysUtils.isEmpty(" ") = true
* - SysUtils.isEmpty("abc") = false
*
*
* @param value 待检查的字符串
* @return true/false
*/
public static boolean isEmpty(String value) {
int strLen;
if (value == null || (strLen = value.length()) == 0) {
return true;
}
for (int i = 0; i < strLen; i++) {
if ((Character.isWhitespace(value.charAt(i)) == false)) {
return false;
}
}
return true;
}
/**
* 检查对象是否为数字型字符串,包含负数开头的。
*/
public static boolean isNumeric(Object obj) {
if (obj == null) {
return false;
}
char[] chars = obj.toString().toCharArray();
int length = chars.length;
if (length < 1) {
return false;
}
int i = 0;
if (length > 1 && chars[0] == '-') {
i = 1;
}
for (; i < length; i++) {
if (!Character.isDigit(chars[i])) {
return false;
}
}
return true;
}
/**
* 检查指定的字符串列表是否不为空。
*/
public static boolean areNotEmpty(String... values) {
boolean result = true;
if (values == null || values.length == 0) {
result = false;
} else {
for (String value : values) {
result &= !isEmpty(value);
}
}
return result;
}
/**
* 把通用字符编码的字符串转化为汉字编码。
*/
public static String unicodeToChinese(String unicode) {
StringBuilder out = new StringBuilder();
if (!isEmpty(unicode)) {
for (int i = 0; i < unicode.length(); i++) {
out.append(unicode.charAt(i));
}
}
return out.toString();
}
/**
* 过滤不可见字符
*/
public static String stripNonValidXMLCharacters(String input) {
if (input == null || ("".equals(input))) {
return "";
}
StringBuilder out = new StringBuilder();
char current;
for (int i = 0; i < input.length(); i++) {
current = input.charAt(i);
if ((current == 0x9) || (current == 0xA) || (current == 0xD)
|| ((current >= 0x20) && (current <= 0xD7FF))
|| ((current >= 0xE000) && (current <= 0xFFFD))
|| ((current >= 0x10000) && (current <= 0x10FFFF))) {
out.append(current);
}
}
return out.toString();
}
public static String leftPad(String str, int size, char padChar) {
if (str == null) {
return null;
} else {
int pads = size - str.length();
if (pads <= 0) {
return str;
} else {
return pads > 8192 ? leftPad(str, size, String.valueOf(padChar)) : padding(pads, padChar).concat(str);
}
}
}
public static String leftPad(String str, int size, String padStr) {
if (str == null) {
return null;
} else {
if (isEmpty(padStr)) {
padStr = " ";
}
int padLen = padStr.length();
int strLen = str.length();
int pads = size - strLen;
if (pads <= 0) {
return str;
} else if (padLen == 1 && pads <= 8192) {
return leftPad(str, size, padStr.charAt(0));
} else if (pads == padLen) {
return padStr.concat(str);
} else if (pads < padLen) {
return padStr.substring(0, pads).concat(str);
} else {
char[] padding = new char[pads];
char[] padChars = padStr.toCharArray();
for (int i = 0; i < pads; ++i) {
padding[i] = padChars[i % padLen];
}
return (new String(padding)).concat(str);
}
}
}
private static String padding(int repeat, char padChar) throws IndexOutOfBoundsException {
if (repeat < 0) {
throw new IndexOutOfBoundsException("Cannot pad a negative amount: " + repeat);
} else {
char[] buf = new char[repeat];
for (int i = 0; i < buf.length; ++i) {
buf[i] = padChar;
}
return new String(buf);
}
}
@SafeVarargs
public static String join(T... elements) {
return join((Object[]) elements, (String) null);
}
public static String join(Object[] array, char separator) {
return array == null ? null : join((Object[]) array, separator, 0, array.length);
}
public static String join(long[] array, char separator) {
return array == null ? null : join((long[]) array, separator, 0, array.length);
}
public static String join(int[] array, char separator) {
return array == null ? null : join((int[]) array, separator, 0, array.length);
}
public static String join(short[] array, char separator) {
return array == null ? null : join((short[]) array, separator, 0, array.length);
}
public static String join(byte[] array, char separator) {
return array == null ? null : join((byte[]) array, separator, 0, array.length);
}
public static String join(char[] array, char separator) {
return array == null ? null : join((char[]) array, separator, 0, array.length);
}
public static String join(float[] array, char separator) {
return array == null ? null : join((float[]) array, separator, 0, array.length);
}
public static String join(double[] array, char separator) {
return array == null ? null : join((double[]) array, separator, 0, array.length);
}
public static String join(Object[] array, char separator, int startIndex, int endIndex) {
if (array == null) {
return null;
} else {
int noOfItems = endIndex - startIndex;
if (noOfItems <= 0) {
return "";
} else {
StringBuilder buf = newStringBuilder(noOfItems);
for (int i = startIndex; i < endIndex; ++i) {
if (i > startIndex) {
buf.append(separator);
}
if (array[i] != null) {
buf.append(array[i]);
}
}
return buf.toString();
}
}
}
public static String join(long[] array, char separator, int startIndex, int endIndex) {
if (array == null) {
return null;
} else {
int noOfItems = endIndex - startIndex;
if (noOfItems <= 0) {
return "";
} else {
StringBuilder buf = newStringBuilder(noOfItems);
for (int i = startIndex; i < endIndex; ++i) {
if (i > startIndex) {
buf.append(separator);
}
buf.append(array[i]);
}
return buf.toString();
}
}
}
public static String join(int[] array, char separator, int startIndex, int endIndex) {
if (array == null) {
return null;
} else {
int noOfItems = endIndex - startIndex;
if (noOfItems <= 0) {
return "";
} else {
StringBuilder buf = newStringBuilder(noOfItems);
for (int i = startIndex; i < endIndex; ++i) {
if (i > startIndex) {
buf.append(separator);
}
buf.append(array[i]);
}
return buf.toString();
}
}
}
public static String join(byte[] array, char separator, int startIndex, int endIndex) {
if (array == null) {
return null;
} else {
int noOfItems = endIndex - startIndex;
if (noOfItems <= 0) {
return "";
} else {
StringBuilder buf = newStringBuilder(noOfItems);
for (int i = startIndex; i < endIndex; ++i) {
if (i > startIndex) {
buf.append(separator);
}
buf.append(array[i]);
}
return buf.toString();
}
}
}
public static String join(short[] array, char separator, int startIndex, int endIndex) {
if (array == null) {
return null;
} else {
int noOfItems = endIndex - startIndex;
if (noOfItems <= 0) {
return "";
} else {
StringBuilder buf = newStringBuilder(noOfItems);
for (int i = startIndex; i < endIndex; ++i) {
if (i > startIndex) {
buf.append(separator);
}
buf.append(array[i]);
}
return buf.toString();
}
}
}
public static String join(char[] array, char separator, int startIndex, int endIndex) {
if (array == null) {
return null;
} else {
int noOfItems = endIndex - startIndex;
if (noOfItems <= 0) {
return "";
} else {
StringBuilder buf = newStringBuilder(noOfItems);
for (int i = startIndex; i < endIndex; ++i) {
if (i > startIndex) {
buf.append(separator);
}
buf.append(array[i]);
}
return buf.toString();
}
}
}
public static String join(double[] array, char separator, int startIndex, int endIndex) {
if (array == null) {
return null;
} else {
int noOfItems = endIndex - startIndex;
if (noOfItems <= 0) {
return "";
} else {
StringBuilder buf = newStringBuilder(noOfItems);
for (int i = startIndex; i < endIndex; ++i) {
if (i > startIndex) {
buf.append(separator);
}
buf.append(array[i]);
}
return buf.toString();
}
}
}
public static String join(float[] array, char separator, int startIndex, int endIndex) {
if (array == null) {
return null;
} else {
int noOfItems = endIndex - startIndex;
if (noOfItems <= 0) {
return "";
} else {
StringBuilder buf = newStringBuilder(noOfItems);
for (int i = startIndex; i < endIndex; ++i) {
if (i > startIndex) {
buf.append(separator);
}
buf.append(array[i]);
}
return buf.toString();
}
}
}
public static String join(Object[] array, String separator) {
return array == null ? null : join((Object[]) array, separator, 0, array.length);
}
public static String join(Object[] array, String separator, int startIndex, int endIndex) {
if (array == null) {
return null;
} else {
if (separator == null) {
separator = "";
}
int noOfItems = endIndex - startIndex;
if (noOfItems <= 0) {
return "";
} else {
StringBuilder buf = newStringBuilder(noOfItems);
for (int i = startIndex; i < endIndex; ++i) {
if (i > startIndex) {
buf.append(separator);
}
if (array[i] != null) {
buf.append(array[i]);
}
}
return buf.toString();
}
}
}
public static String join(Iterator> iterator, char separator) {
if (iterator == null) {
return null;
} else if (!iterator.hasNext()) {
return "";
} else {
Object first = iterator.next();
if (!iterator.hasNext()) {
return Objects.toString(first, "");
} else {
StringBuilder buf = new StringBuilder(256);
if (first != null) {
buf.append(first);
}
while (iterator.hasNext()) {
buf.append(separator);
Object obj = iterator.next();
if (obj != null) {
buf.append(obj);
}
}
return buf.toString();
}
}
}
public static String join(Iterator> iterator, String separator) {
if (iterator == null) {
return null;
} else if (!iterator.hasNext()) {
return "";
} else {
Object first = iterator.next();
if (!iterator.hasNext()) {
return Objects.toString(first, "");
} else {
StringBuilder buf = new StringBuilder(256);
if (first != null) {
buf.append(first);
}
while (iterator.hasNext()) {
if (separator != null) {
buf.append(separator);
}
Object obj = iterator.next();
if (obj != null) {
buf.append(obj);
}
}
return buf.toString();
}
}
}
public static String join(Iterable> iterable, char separator) {
return iterable == null ? null : join(iterable.iterator(), separator);
}
public static String join(Iterable> iterable, String separator) {
return iterable == null ? null : join(iterable.iterator(), separator);
}
public static String join(List> list, char separator, int startIndex, int endIndex) {
if (list == null) {
return null;
} else {
int noOfItems = endIndex - startIndex;
if (noOfItems <= 0) {
return "";
} else {
List> subList = list.subList(startIndex, endIndex);
return join(subList.iterator(), separator);
}
}
}
public static String join(List> list, String separator, int startIndex, int endIndex) {
if (list == null) {
return null;
} else {
int noOfItems = endIndex - startIndex;
if (noOfItems <= 0) {
return "";
} else {
List> subList = list.subList(startIndex, endIndex);
return join(subList.iterator(), separator);
}
}
}
public static String joinWith(String separator, Object... objects) {
if (objects == null) {
throw new IllegalArgumentException("Object varargs must not be null");
} else {
String sanitizedSeparator = defaultString(separator);
StringBuilder result = new StringBuilder();
Iterator iterator = Arrays.asList(objects).iterator();
while (iterator.hasNext()) {
String value = Objects.toString(iterator.next(), "");
result.append(value);
if (iterator.hasNext()) {
result.append(sanitizedSeparator);
}
}
return result.toString();
}
}
private static StringBuilder newStringBuilder(int noOfItems) {
return new StringBuilder(noOfItems * 16);
}
public static String defaultString(String str) {
return defaultString(str, "");
}
public static String defaultString(String str, String defaultStr) {
return str == null ? defaultStr : str;
}
public static boolean isContainChinese(String str) {
Matcher matcher = pattern.matcher(str);
return matcher.find();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy