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

cn.jiangzeyin.StringUtil Maven / Gradle / Ivy

The newest version!
package cn.jiangzeyin;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 字符串工具类
 *
 * @author jiangzeyin
 **/
public final class StringUtil {

    private final static String CONFIG_LOCATION_DELIMITERS = ",; \t\n";

    /**
     * GENERAL_PUNCTUATION 判断中文的“号
     * 

* CJK_SYMBOLS_AND_PUNCTUATION 判断中文的。号 *

* HALFWIDTH_AND_FULLWIDTH_FORMS 判断中文的,号 * * @param c 字符 * @return boolean * @author jiangzeyin */ public static boolean isChinese(char c) { Character.UnicodeBlock ub = Character.UnicodeBlock.of(c); return ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS; } /** * 判断是否包含中文 * * @param strName 字符串 * @return boolean * @author jiangzeyin */ public static boolean isChinese(String strName) { char[] ch = strName.toCharArray(); for (char c : ch) { if (isChinese(c)) { return true; } } return false; } /** * 将字符串中的中文替换为其他字符串 * * @param source 原字符串 * @param replacement 替换后的字符 * @return 结果 */ public static String replaceChinese(String source, String replacement) { if (StringUtil.isEmpty(source)) return ""; replacement = convertNULL(replacement); String reg = "[\u4e00-\u9fa5]"; Pattern pat = Pattern.compile(reg); Matcher mat = pat.matcher(source); return mat.replaceAll(replacement); } /** * 判断是否为空 * * @param data 字符串 * @return ‘空 true */ public static boolean isEmpty(String data) { return data == null || data.length() < 1; } /** * 判字符串是否满足一定长度 * * @param data 字符串 * @param len 长度 * @return 满足 false */ public static boolean isEmpty(String data, int len) { boolean flag = isEmpty(data); return flag || !(data.length() == len); } /** * 判断是是否为空 可以判断长度 * * @param data 字符串 * @param minLength 最小长度 * @param maxLength 最大长度 * @return 是空或者 满足条件 返回true * @author jiangzeyin */ public static boolean isEmpty(String data, int minLength, int maxLength) { // 对象 空 if (data == null) return true; if (data.isEmpty()) return true; if (minLength <= 0 || maxLength <= 0) throw new IllegalArgumentException(" minLength or maxLength <=0"); if (minLength > maxLength) throw new IllegalArgumentException(" minLength > maxLength"); return data.length() > maxLength || data.length() < minLength; } public static String trimAll(String data) { if (isEmpty(data)) return ""; return data.replaceAll("\\s*", ""); } /** * 过滤<, >,\n 字符的方法。 * * @param input 需要过滤的字符 * @return 完成过滤以后的字符串 */ public static String filterHTML(String input) { if (input == null) { return null; } if (input.length() == 0) { return input; } input = input.trim(); // input = input.replaceAll(" ", ""); // input = input.replaceAll("&", "&"); input = input.replaceAll("<", "<"); input = input.replaceAll(">", ">"); // input = input.replaceAll(" ", " "); input = input.replaceAll("'", "'"); // input = input.replaceAll("\"", """); //input = input.replaceAll("\n", "
"); // String s = "<:<,>:>, : ,':',\":",\n:
"; // StringBuffer sb = new StringBuffer(input); // String[] t = StringToArray(s, ","); // for (String string : t) { // String[] temp = string.split(":"); // int i = sb.indexOf(temp[0]); // while (i > -1) { // int oldLen = temp[0].length(); // int newLen = temp[1].length(); // sb.delete(i, i + oldLen); // sb.insert(i, temp[1]); // i = sb.indexOf(temp[0], i + newLen); // } // } // return sb.toString(); return input; } /** * 编译html * * @param input inp * @return str */ public static String compileHtml(String input) { if (input == null) { return null; } if (input.length() == 0) { return input; } input = input.replaceAll("&", "&"); input = input.replaceAll("<", "<"); input = input.replaceAll(">", ">"); input = input.replaceAll(" ", " "); input = input.replaceAll("'", "'"); input = input.replaceAll(""", "\""); return input.replaceAll("
", "\n"); } /** * 将字符串按照空格拆分 * * @param str 字符串 * @return 数组 */ public static String[] stringToArray(String str) { return stringToArray(str, CONFIG_LOCATION_DELIMITERS); } /** * 将字符串按照空格拆分 * * @param str 字符串 * @param separator 指定字符 * @return 数组 */ public static String[] stringToArray(String str, String separator) { if ((str == null) || (separator == null)) { return null; } int i = 0; StringTokenizer st = new StringTokenizer(str, separator); String[] array = new String[st.countTokens()]; while (st.hasMoreTokens()) { array[(i++)] = st.nextToken(); } return array; } public static ArrayList stringToArrayList(String str, String separator) { ArrayList arr = new ArrayList<>(); if ((str == null) || (separator == null)) { return arr; } StringTokenizer st = new StringTokenizer(str, separator); while (st.hasMoreTokens()) { arr.add(st.nextToken()); } return arr; } public static int[] stringToIntArray(String str, String separator) { if ((str == null) || (separator == null)) { return null; } int i = 0; StringTokenizer st = new StringTokenizer(str, separator); int[] array = new int[st.countTokens()]; while (st.hasMoreTokens()) { array[(i++)] = parseInt(st.nextToken()); } return array; } public static int parseInt(String num) { return parseInt(num, 0); } public static int parseInt(Object num) { if (num == null) return 0; return parseInt(num.toString(), 0); } public static int parseInt(Object obj, int default_) { return parseInt(convertNULL(obj), default_); } public static int parseInt(String num, int default_) { if ((num == null) || (num.length() == 0)) return default_; try { return Integer.parseInt(num); } catch (NumberFormatException ignored) { } return default_; } public static long parseLong(String num) { if (num == null) return 0L; try { return Long.parseLong(num); } catch (NumberFormatException ignored) { } return 0L; } public static float parseFloat(String num) { if (num == null) return 0.0F; try { return Float.parseFloat(num); } catch (NumberFormatException ignored) { } return 0.0F; } public static double parseDouble(String num) { if (num == null) return 0.0D; try { return Double.parseDouble(num); } catch (NumberFormatException ignored) { } return 0.0D; } public static String convertNULL(String input) { if (input == null) return ""; return input.trim().intern(); } public static String convertNULL(Object input) { if (input == null) return ""; return convertNULL(input.toString()); } /** * 转换异常信息 * * @param e 异常 * @return 字符串 * @author jiangzeyin */ public static String fromException(Throwable e) { try { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); e.printStackTrace(pw); return "\r\n" + sw.toString() + "\r\n"; } catch (Exception ignored) { } return ""; } /** * 格式化路径 * * @param input 字符串 * @return 处理后 */ public static String clearPath(String input) { input = input.replace('\\', '/'); return clearPath_(input); } /** * 格式化路径 * 支持协议路径 :// * * @param input 字符串 * @return 处理后 */ private static String clearPath_(String input) { int from = 0; int j = input.indexOf("://"); if (j != -1) { from = j + 3; } int i = input.indexOf("//", from); if (i == -1) { return input; } String input_ = input.substring(0, i) + "/" + input.substring(i + 2); return clearPath_(input_); } /** * 驼峰命名 * * @param inString 字符串 * @return 结果 */ public static String captureName(String inString) { if (StringUtil.isEmpty(inString)) return ""; if (inString.length() > 1) return inString.substring(0, 1).toUpperCase() + inString.substring(1); return inString.toUpperCase(); } /** * 简化class name * * @param className className * @return 结果 */ public static String simplifyClassName(String className) { String[] packages = StringUtil.stringToArray(className, "."); if (packages == null || packages.length < 1) return className; int len = packages.length; if (len == 1) return packages[0]; StringBuilder name = new StringBuilder(); for (int i = 0; i < len - 1; i++) { String item = packages[i]; name.append(item, 0, 1).append("."); } name.append(packages[len - 1]); return name.toString(); } public static String join(Iterator iterator, CharSequence separator) { // handle null, zero and one elements before building a buffer if (iterator == null) { return null; } if (!iterator.hasNext()) { return ""; } Object first = iterator.next(); if (!iterator.hasNext()) { return first == null ? "" : first.toString(); } // two or more elements StringBuilder buf = new StringBuilder(256); // Java default is 16, probably too small if (first != null) { buf.append(first); } while (iterator.hasNext()) { if (separator != null) { buf.append(separator); } Object obj = iterator.next(); if (obj != null) { if (StringUtil.isEmpty(obj.toString())) continue; buf.append(obj); } } return buf.toString(); } public static String join(Collection collection, CharSequence separator) { if (collection == null) { return null; } return join(collection.iterator(), separator); } public static String join(Object[] collection, CharSequence separator) { if (collection == null) { return null; } return join(Arrays.asList(collection), separator); } public static String join(CharSequence separator, Object... collection) { if (collection == null) { return null; } return join(Arrays.asList(collection), separator); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy