All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.aiwiown.face.internal.util.StringUtils Maven / Gradle / Ivy

There is a newer version: 3.0.9
Show newest version
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