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

cn.featherfly.common.lang.StringUtils Maven / Gradle / Ivy

package cn.featherfly.common.lang;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;

import cn.featherfly.common.constant.Chars;
import cn.featherfly.common.constant.Charset;
import cn.featherfly.common.constant.Unit;


/**
 * 

* 字符串的工具类 *

* @author 钟冀 * @since 1.0 * @version 1.0 */ public final class StringUtils { private StringUtils() { } /** *

* null的字符串表示
public static String NULL_STRING = "null" *

*/ public static final String NULL_STRING = "null"; /** *

* 如果第一个为有效的字符串(不是null,空串),则返回,否则返回第二个. *

* @param target 目标字符串 * @param defaultTarget 默认字符串 * @return 第一个为有效的字符串(null,空串),则返回,否则返回第二个 */ public static String pickNotEmpty(String target, String defaultTarget) { return isEmpty(target) ? defaultTarget : target; } /** *

* 如果第一个为有效的字符串(不是null,空串,全空白字符组成的字符串),则返回,否则返回第二个. *

* @param target 目标字符串 * @param defaultTarget 默认字符串 * @return 第一个为有效的字符串(null,空串,全空白字符组成的字符串),则返回,否则返回第二个 */ public static String pickNotBlank(String target, String defaultTarget) { return isBlank(target) ? defaultTarget : target; } /** *

* 返回第一个有效的字符串(不是null,不是空字符串,不是由全空白字符组成的字符串) *

* @param pickedItems 需要选择的字符串 * @return 返回第一个有效的字符串 */ public static String pickFirst(String...pickedItems) { if (pickedItems != null) { for (String s : pickedItems) { if (isNotBlank(s)) { return s; } } } return null; } /** *

* 返回最后一个有效字符串(不是null,不是空字符串,不是由全空白字符组成的字符串) *

* @param pickedItems 需要选择的字符串 * @return 返回最后一个有效字符串 */ public static String pickLast(String...pickedItems) { if (pickedItems != null) { for (int i = pickedItems.length - 1; i >= 0; i--) { String s = pickedItems[i]; if (isNotBlank(s)) { return s; } } } return null; } /** * 如果为null,返回空字符串,否则返回传入字符串 * @param str 需要判断的字符串 * @return 传入字符串或者空字符串 */ public static String getString(String str) { return getString(str, Chars.EMPTY_STR); } /** * 如果为null,空字符串,返回第二个参数,否则返回第一个参数 * @param str 需要判断的字符串 * @param defValue 默认值 * @return 第一个参数或第二个参数 */ public static String getString(String str, String defValue) { return getString(str, defValue, true); } /** * 如果为null,空字符串,(当ignoreCaseNullStr为false,还要判断字符串"null"和"NULL") * 返回第二个参数,否则返回第一个参数 * @param str 需要判断的字符串 * @param defValue 默认值 * @param ignoreCaseNullStr 是否忽略字符串形式的null和NULL * @return 第一个参数或第二个参数 */ public static String getString(String str, String defValue, boolean ignoreCaseNullStr) { if (str == null || "".equals(str)) { return defValue; } else if (!ignoreCaseNullStr && (NULL_STRING.equals(str) || NULL_STRING.toUpperCase().equals(str))) { return defValue; } else { return str; } } /** *

* 判断传入字符串数组是否为null,0长度或者全部是空字符串(即""和null). * 只要有一个不是空字符串即返回真. *

* @param strs 需要判断的字符串数组 * @return 传入是否是一个空字符串数组 */ public static boolean isEmpty(String[] strs) { for (String str : strs) { if (LangUtils.isNotEmpty(str)) { return false; } } return true; } /** *

* 判断传入字符串集合是否为null,0长度或者全部是空字符串(即""和null). * 只要有一个不是空字符串即返回真. *

* @param strs 需要判断的字符串集合 * @return 传入是否是一个空字符串集合 */ public static boolean isEmpty(Collection strs) { for (String str : strs) { if (LangUtils.isNotEmpty(str)) { return false; } } return true; } /** *

* 判断传入字符串是否是空字符串(即""和null) *

* @param str 需要判断的字符串 * @return 传入字符串是否是空字符串 */ public static boolean isEmpty(String str) { return LangUtils.isEmpty(str); } /** *

* 判断传入字符串是否不是空字符串(即""和null以外的) *

* @param str 需要判断的字符串 * @return 传入字符串是否不是空字符串 */ public static boolean isNotEmpty(String str) { return !isEmpty(str); } /** *

* 判断传入字符串是否是空白字符串(即全是空白字符) *

* @param str 需要判断的字符串 * @return 传入字符串是否是空白字符串 */ public static boolean isBlank(String str) { return org.apache.commons.lang.StringUtils.isBlank(str); } /** *

* 判断传入字符串是否不是空白字符串(即包含空白字符以外的字符) *

* @param str 需要判断的字符串 * @return 传入字符串是否不是空白字符串 */ public static boolean isNotBlank(String str) { return !isBlank(str); } /** * 判断传入字符串是否为空以及是否为字符串null(不区分大小写). * @param str 需要判断的字符串 * @return 是否为空以及是否为null字符串 */ public static boolean isNull(String str) { return isEmpty(str) || "NULL".equalsIgnoreCase(str.trim()); } /** *

* 去除字符串开始和结尾的空白字符. * 如果传入的对象为null,直接返回,不会出现NullPointerException *

* @param str 需要处理的字符串 * @return 去除开始和结尾空白字符后的字符串 */ public static String trim(String str) { if (str == null) { return str; } return str.trim(); } /** *

* 去除字符串开始和结尾的空白字符, * 如果传入的对象为null,则返回defaultValue. *

* @param str 需要处理的字符串 * @param defaultValue 默认值 * @return 去除开始和结尾空白字符后的字符串 */ public static String trim(String str, String defaultValue) { if (str == null) { return defaultValue; } return str.trim(); } /** *

* 去除字符串开始的空白字符 *

* @param str 需要处理的字符串 * @return 去除开始空白字符后的字符串 */ public static String trimStart(String str) { if (isBlank(str)) { return ""; } char[] c = str.toCharArray(); int offset = 0; for (int i = 0; i < c.length; i++) { if (!Character.isWhitespace(c[i])) { offset = i; break; } } return new String(c, offset, c.length - offset); } /** *

* 去除字符串结尾的空白字符 *

* @param str 需要处理的字符串 * @return 去除结尾空白字符的字符串 */ public static String trimEnd(String str) { if (isBlank(str)) { return ""; } char[] c = str.toCharArray(); int end = 0; for (int i = c.length; i > 0; i--) { if (!Character.isWhitespace(c[i - 1])) { end = i; break; } } return new String(c, 0, end); } /** *

* 判断传入的字符串是否为整数(使用10进制判断) *

* @param str 需要判断的字符串 * @return 传入的字符串是否为整数 */ public static boolean isInteger(String str) { final int numberUnit = 10; return isInteger(str, numberUnit); } /** *

* 判断传入的字符串是否为整数(使用指定进制判断) *

* @param str 需要判断的字符串 * @param radio 使用的进制 * @return 传入的字符串是否为整数 */ public static boolean isInteger(String str, int radio) { str = trim(str); try { Integer.parseInt(str, radio); return true; } catch (NumberFormatException e) { return false; } } /** *

* 将传入字符串以大写形式返回 *

* @param str 需要转换的字符串 * @return 传入字符串的大写形式 */ public static String toUpperCase(String str) { if (isEmpty(str)) { return str; } else { return str.toUpperCase(); } } /** *

* 将传入字符串以小写形式返回 *

* @param str 需要转换的字符串 * @return 传入字符串的小写形式 */ public static String toLowerCase(String str) { if (isEmpty(str)) { return str; } else { return str.toLowerCase(); } } /** *

* 将传入字符串中[#数字]的字符串使用传入的参数替换(第几个替换#数字) * 例如:[#1] is a [#2],"lilei","boy",返回lilei is a boy *

* @param str 需要格式化的字符串 * @param args 参数 * @return 格式化后的字符串 */ public static String format(String str, String...args) { if (isNotBlank(str) && str.indexOf('#') > -1) { StringBuilder sb = new StringBuilder(); boolean isArg = false; for (int x = 0; x < str.length(); x++) { char c = str.charAt(x); if (isArg) { isArg = false; if (Character.isDigit(c)) { int val = Character.getNumericValue(c); if (val >= 1 && val <= args.length) { sb.append(args[val - 1]); continue; } } sb.append('#'); } if (c == '#') { isArg = true; } else { sb.append(c); } } if (isArg) { sb.append('#'); } return sb.toString(); } else { return str; } } /** *

* 文本替换 *

* @param text 搜索的源 * @param searchString 搜索的内容 * @param replacement 替换的内容 * @param max 最大替换的次数 * @return 替换完成的文本, 如果传入null返回null */ public static String replace(String text, String searchString, String replacement, int max) { return org.apache.commons.lang.StringUtils.replace(text, searchString, replacement, max); } /** *

* 文本替换 *

* @param text 搜索的源 * @param searchString 搜索的内容 * @param replacement 替换的内容 * @return 替换完成的文本, 如果传入null返回null */ public static String replace(String text, String searchString, String replacement) { return replace(text, searchString, replacement, -1); } /** *

* 文本替换,只替换第一次匹配的结果. *

* @param text 搜索的源 * @param searchString 搜索的内容 * @param replacement 替换的内容 * @return 替换完成的文本, 如果传入null返回null */ public static String replaceFirst(String text, String searchString, String replacement) { return org.apache.commons.lang.StringUtils.replaceOnce(text, searchString, replacement); } /** * Abbreviates a String using ellipses. * This will turn "Now is the time for all good men" into "Now is the time for..." * * @param src 源字符串 * @param index 起始位置 * @return abbreviated String, null if null String input */ public static String abbreviate(String src, int index) { return org.apache.commons.lang.StringUtils.abbreviate(src, index); } /** *

* null安全的判断两个字符串是否相等,如果两个都为null,返回true. *

* @param str1 字符串1 * @param str2 字符串2 * @return 两个字符串是否相等 */ public static boolean isEquals(String str1, String str2) { if (str1 != null) { return str1.equals(str2); } if (str2 != null) { return str2.equals(str1); } return true; } /** *

* null安全的判断两个字符串是否相等,忽略大小写,如果两个都为null,返回true. *

* @param str1 字符串1 * @param str2 字符串2 * @return 两个字符串是否相等 */ public static boolean isEqualsIgnoreCase(String str1, String str2) { if (str1 != null) { return str1.equalsIgnoreCase(str2); } if (str2 != null) { return str2.equalsIgnoreCase(str1); } return true; } /** * 连接集合中的所有元素以创建一个String,其中集合中的元素间以指定的delim来分隔, * 如果 集合为null或长度为0,则返回"". * @param collection 需要连接的String为元素的集合 * @param delim 集合中的元素的分隔符。(null表示直接连接集合中的元素,不加入分割符) * @return String 形式为:list的元素+delim+list的元素+delim+... */ public static String join(Collection collection, String delim) { if (LangUtils.isEmpty(collection)) { return ""; } StringBuilder sb = new StringBuilder(); Iterator iter = collection.iterator(); while (iter.hasNext()) { String strTemp = pickFirst(iter.next(), Chars.EMPTY_STR); sb.append(strTemp); if (iter.hasNext()) { sb.append(delim); } } return sb.toString(); } /** * 将字符串数组使用指定的分隔符合并成一个字符串. * 如果数组为null或长度为0,则返回"". * @param array 字符串数组 * @param delim 分隔符,为null的时候使用""作为分隔符(即没有分隔符) * @return 合并后的字符串 */ public static String join(String[] array, String delim) { if (LangUtils.isEmpty(array)) { return ""; } int length = array.length - 1; if (delim == null) { delim = ""; } StringBuilder result = new StringBuilder(length * Unit.TEN); for (int i = 0; i < length; i++) { result.append(array[i]); result.append(delim); } result.append(array[length]); return result.toString(); } /** * 以指定的delim分隔符分隔String,并将分隔的每一个String作为List的一个元素. * * @param source 需要分隔的string * @param delim 分隔String的符合 (null表示以空格作为分隔符) * @return 存储了分隔的子串的List */ public static List splitToList(String source, String delim) { List list = new ArrayList(); Collections.addAll(list, split(source, delim)); return list; } /** * 此方法将给出的字符串source使用delim划分为单词数组. * * @param source 需要进行划分的原字符串 * @param delim 单词的分隔字符串 * @return 划分以后的数组,如果source或delim为null的时候返回以source为唯一元素的数组. */ public static String[] split(String source, String delim) { String[] wordLists; if (source == null || delim == null) { wordLists = new String[1]; wordLists[0] = source; return wordLists; } StringTokenizer st = new StringTokenizer(source, delim); int total = st.countTokens(); wordLists = new String[total]; for (int i = 0; i < total; i++) { wordLists[i] = st.nextToken(); } return wordLists; } /** * 此方法将给出的字符串source使用逗号划分为单词数组. * * @param source 需要进行划分的原字符串 * @return 划分以后的数组,如果source为null的时候返回以source为唯一元素的数组。 */ public static String[] split(String source) { return split(source, Chars.COMMA); } /** * 将数转换成字符串数组,使用对象的toString方法. * @param array 数组 * @return 转换后的字符串数组 */ public static String[] objectArrayToStringArray(Object[] array) { String[] strArray = null; if (array != null) { if (array.length < 1) { strArray = new String[0]; } else if (array instanceof String[]) { strArray = (String[]) array; } else { strArray = new String[array.length]; for (int i = 0; i < array.length; i++) { Object object = array[i]; if (object == null) { strArray[i] = null; } else { strArray[i] = object.toString(); } } } } return strArray; } /** * 删除String中的所有空格,并返回删除后的String. * * @param str 需要进行删除操作的String * @return String 删除空格后的String */ public static String removeSpaces(String str) { StringBuffer newString = new StringBuffer(); for (int i = 0; i < str.length(); i++) { if (str.charAt(i) != ' ') { newString.append(str.charAt(i)); } } return newString.toString(); } /** * 判断一个String里是不是包含另一个String * * @param text 源文本 * @param searchString 包含的字符串 * @return 是否包含 */ public static boolean contains(String text, String searchString) { return text.indexOf(searchString) != -1; } /** * 字符串数组中是否包含指定的字符串.大小写敏感 * @param texts 源文本数组 * @param searchString 包含的字符串 * @return 不包含,返回-1,如果包含,返回数组的下标数 */ public static int contains(String[] texts, String searchString) { return contains(texts, searchString, true); } /** * 不区分大小写判定字符串数组中是否包含指定的字符串。 * @param texts 源文本数组 * @param searchString 包含的字符串 * @return 不包含,返回-1,如果包含,返回数组的下标数 */ public static int containsIgnoreCase(String[] texts, String searchString) { return contains(texts, searchString, false); } /* * 字符串数组中是否包含指定的字符串。 * @param texts 源文本数组 * @param searchString 包含的字符串 * @param caseSensitive 是否大小写敏感 * @return 不包含,返回-1,如果包含,返回数组的小标数 */ private static int contains(String[] texts, String searchString, boolean caseSensitive) { for (int i = 0; i < texts.length; i++) { if (caseSensitive) { if (texts[i].equals(searchString)) { return i; } } else { if (texts[i].equalsIgnoreCase(searchString)) { return i; } } } return -1; } /** * 将一个字符串进行转码处理. * * @param str 输入字符串 * @param charset 输出字符转编码时使用的字符集 * @return 输出转换后的字符串. */ public static String encode(String str, String charset) { if (isEmpty(charset)) { charset = Charset.UTF_8; } try { if (str == null) { return null; } else { str = new String(str.getBytes(), charset); return str; } } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } } /** * 将一个字符串进行转码处理. * * @param str 输入字符串 * @param fromCharset 输入字符串解码时使用的字符集 * @param toCharset 输出字符转编码时使用的字符集 * @return 输出转换后的字符串. */ public static String encode(String str, String fromCharset, String toCharset) { try { if (isEmpty(toCharset)) { toCharset = Charset.UTF_8; } if (toCharset.equals(fromCharset)) { return str; } if (str == null) { return null; } else { str = new String(str.getBytes(fromCharset), toCharset); return str; } } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } } /** * UTF-8编码. * * @param str 输入字符串 * @return 输出转换后的字符串. */ public static String toUTF8(String str) { return encode(str, Charset.UTF_8); } /** * UTF-8编码. * * @param str 输入字符串 * @param fromEncode 输入字符串解码时使用的字符集 * @return 输出转换后的字符串. */ public static String toUTF8(String str, String fromEncode) { return encode(str, fromEncode, Charset.UTF_8); } /** * 将一个字符串进行中文处理. *

解决中文名不能下载的问题. * * @param str 输入字符串 * @param charset 输入字符串解码时使用的字符集 * @return 输出转换后的字符串,如果出错,返回null。 */ public static String transCode(String str, String charset) { try { if (str == null) { return null; } else { str = str.trim(); str = new String(str.getBytes(Charset.ISO8859_1), charset); return str; } } catch (Exception e) { return null; } } /** * 将字符串转换为整型数 * * @param str 输入的字符串 * @param defaultValue 如果转换失败后的默认值 * @return 字符串转换为的整数 */ public static int toInt(String str, int defaultValue) { int returnInt = defaultValue; try { returnInt = Integer.parseInt(str); } catch (Exception e) { returnInt = defaultValue; } return returnInt; } /** * 将字符串转换为长整型数 * * @param str 输入的字符串 * @param defaultValue 如果转换失败后的默认值 * @return 字符串转换为的长整型数 */ public static long toLong(String str, long defaultValue) { long returnInt = defaultValue; try { returnInt = Long.parseLong(str); } catch (Exception e) { returnInt = defaultValue; } return returnInt; } /** * 将字符串转换为双精度数 * * @param str 输入的字符串 * @param defaultValue 如果转换失败后的默认值 * @return 字符串转换为的双精度数 */ public static double toDouble(String str, double defaultValue) { double returnInt = defaultValue; try { returnInt = Double.parseDouble(str); } catch (Exception e) { returnInt = defaultValue; } return returnInt; } /** * 将字符串转换为单精度数 * * @param str 输入的字符串 * @param defaultValue 如果转换失败后的默认值 * @return 字符串转换为的单精度数 */ public static float toFloat(String str, float defaultValue) { float returnInt = defaultValue; try { returnInt = Float.parseFloat(str); } catch (Exception e) { returnInt = defaultValue; } return returnInt; } /** * 获取传入字符串的长度,null返回0. * * @param str 字符串 * @return 传入字符串的长度,null返回0 */ public static int getLength(String str) { return getLength(str, false); } /** * 获取传入字符串的长度,null返回0. * * @param str 字符串 * @param needDeleteSpace 是否删除传入字符串的空字符串 * @return 传入字符串的长度,null返回0 */ public static int getLength(String str, boolean needDeleteSpace) { if (str == null) { return Chars.ZERO; } if (needDeleteSpace) { str = removeSpaces(str); return str.length(); } else { return str.length(); } } /** * 返回一个以传入参数为位置开始的子字符串. * null 返回 null. "" 返回 "". * @param str 字符串 * @param start 开始位置 * @return 子串. */ public static String substring(String str, int start) { return org.apache.commons.lang.StringUtils.substring(str, start); } /** * 返回一个以传入参数为位置开始与结束的子字符串. * null 返回 null. "" 返回 "". * @param str 字符串 * @param start 开始位置 * @param end 结束位置 * @return 子串. */ public static String substring(String str, int start, int end) { return org.apache.commons.lang.StringUtils.substring(str, start, end); } /** * 取字符串的前X个字符,X为传入参数. * @param str 字符串 * @param index 序号 * @return 子串. */ public static String substringBefore(String str, int index) { if (isEmpty(str)) { return str; } if (str.length() <= index) { return str; } return str.substring(0, index); } /** * 取字符串的后X个字符,X为传入参数. * @param str 字符串 * @param index 序号 * @return 子串. */ public static String substringAfter(String str, int index) { if (isEmpty(str)) { return str; } int length = str.length(); if (length <= index) { return str; } return str.substring(length - index, length - 1); } /** * 返回从第一次找到分隔字符串的位置之后的字符串. * @param str 字符串 * @param separator 分隔字符串 * @return 第一次找到分隔字符串的位置之后的字符串. */ public static String substringAfter(String str, String separator) { return org.apache.commons.lang.StringUtils.substringAfter(str, separator); } /** * 返回从最后一次找到分隔字符串的位置之后的字符串. * @param str 字符串 * @param separator 分隔字符串 * @return 最后一次找到分隔字符串的位置之后的字符串. */ public static String substringAfterLast(String str, String separator) { return org.apache.commons.lang.StringUtils.substringAfterLast(str, separator); } /** * 返回从第一次找到分隔字符串的位置之前的字符串. * @param str 字符串 * @param separator 分隔字符串 * @return 第一次找到分隔字符串的位置之前的字符串. */ public static String substringBefore(String str, String separator) { return org.apache.commons.lang.StringUtils.substringBefore(str, separator); } /** * 返回从最后一次找到分隔字符串的位置之前的字符串. * @param str 字符串 * @param separator 分隔字符串 * @return 最后一次找到分隔字符串的位置之前的字符串. */ public static String substringBeforeLast(String str, String separator) { return org.apache.commons.lang.StringUtils.substringBeforeLast(str, separator); } /** * 返回两次出现的标识字符串中间的字符串. * @param str 字符串 * @param tag 标识字符串 * @return 两次出现的标识字符串中间的字符串. */ public static String substringBetween(String str, String tag) { return org.apache.commons.lang.StringUtils.substringBetween(str, tag); } /** * 返回开始字符串和结束字符串中间的字符串. * @param str 字符串 * @param start 开始字符串 * @param end 结束字符串 * @return 开始字符串和结束字符串中间的字符串. */ public static String substringBetween(String str, String start, String end) { return org.apache.commons.lang.StringUtils.substringBetween(str, start, end); } /** * 判断字符串是否以指定字符串开始,如果需要判断的源文本为null,返回false. * * @param sourceString 源文本 * @param keyString 判断是否是起始的串 * @return 字符串是否以指定字符串开始 */ public static boolean startsWith(String sourceString, String keyString) { if (sourceString == null) { return false; } return sourceString.startsWith(keyString); } /** * 判断字符串是否以指定字符串结束,如果需要判断的源文本为null,返回false. * * @param sourceString 源文本 * @param keyString 判断是否是起始的串 * @return 字符串是否以指定字符串结束 */ public static boolean endWith(String sourceString, String keyString) { if (sourceString == null) { return false; } return sourceString.endsWith(keyString); } /** * 追加字符串,如果字符串为null,忽略. * 如果两个字符串都为null,返回null. * * @param str1 原字符串 * @param str2 要追加的字符串 * @return 追加后的字符串 */ public static String append(String str1, String str2) { if (str1 == null) { return str2; } if (str2 == null) { return str1; } return str1 + str2; } /** * 去掉首尾字符 * * @param str 源字符串 * @param ts 需要去除的字符 * @return 去掉首尾字符后的字符串 */ public static String trimBeginEnd(String str, String ts) { if (str == null) { return ""; } while (str.startsWith(ts)) { str = str.substring(ts.length(), str.length()); } while (str.endsWith(ts)) { str = str.substring(0, str.length() - ts.length()); } return str; } /** * 去掉首尾空格,包括全角,半角 * * @param str 源字符串 * @return 去掉首尾空格后的字符串 */ public static String trimBeginEndBlank(String str) { if (str == null) { return ""; } str = str.trim(); str = trimBeginEnd(str, " "); str = trimBeginEnd(str, " "); return str; } /** * 将字符串中的变量(以“%”为前导后接数字)使用values数组中的内容进行替换。 * 替换的过程是不进行嵌套的,即如果替换的内容中包含变量表达式时不会替换。 * * @param source 带参数的原字符串 * @param values 替换用的字符串数组 * @return 替换后的字符串 */ public static String getReplaceString(String source, String...values) { return getReplaceString(Chars.MOD, source, values); } /** * 将字符串中的变量使用values数组中的内容进行替换。 * 替换的过程是不进行嵌套的,即如果替换的内容中包含变量表达式时不会替换。 * * @param prefix 变量前缀字符串 * @param source 带参数的原字符串 * @param values 替换用的字符串数组 * @return 替换后的字符串。 * 如果前缀为null则使用“%”作为前缀; * 如果source或者values为null或者values的长度为0则返回source; * 如果values的长度大于参数的个数,多余的值将被忽略; * 如果values的长度小于参数的个数,则后面的所有参数都使用最后一个值进行替换。 */ public static String getReplaceString(String prefix, String source, String[] values) { String result = source; if (source == null || values == null || values.length < 1) { return source; } if (prefix == null) { prefix = Chars.MOD; } for (int i = 0; i < values.length; i++) { String argument = prefix + Integer.toString(i + 1); int index = result.indexOf(argument); if (index != -1) { String temp = result.substring(0, index); if (i < values.length) { temp += values[i]; } else { temp += values[values.length - 1]; } temp += result.substring(index + 2); result = temp; } } return result; } /** * 过滤<, >, " 等html字符的方法。 * * @param str * 需要过滤的字符串 * @return 完成过滤以后的字符串 */ public static String filterHtml(String str) { if (str == null) { return null; } if (str.length() == 0) { return str; } StringBuilder html = new StringBuilder(); for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); switch (c) { case '&': html.append("&"); break; case '<': html.append("<"); break; case '>': html.append(">"); break; case '\'': html.append("'"); break; case '\"': html.append("""); break; default: html.append(c); break; } } return html.toString(); } /** * 还原成html * * @param str * 需要转换的字符串 * @return 完成转换的html */ public static String toHtml(String str) { if (str == null) { return null; } if (str.length() == 0) { return str; } str = str.replaceAll("&", "&"); str = str.replaceAll("<", "<"); str = str.replaceAll(">", ">"); str = str.replaceAll("'", "'"); str = str.replaceAll(""", "\""); return str; } /** *

* 为传入URI附加请求参数 *

* @param uri uri * @param name name * @param value value * @return 附加请求参数后的URI */ // TODO 是否应该移动到web public static String appendRequestParams(String uri, String name, String value) { if (LangUtils.isNotEmpty(uri)) { if (uri.contains(Chars.QUESTION)) { uri += Chars.AMP; } else { uri += Chars.QUESTION; } uri += name + "=" + value; } return uri; } // /** // * 将阿拉伯数字转换为中文大写数字. // * 注意:该方法为临时使用,对0支持不好. // * 例如:100将转换为一百零十零. // * // * @param number 阿拉伯数字 // * @return 中文大写数字 // */ // public static String toChineseNumber(String number) { // String[] num = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"}; // String[] unt = {"", "", "十", "百", "千", "万"}; // String value = ""; // for (int i = 0, j = number.length(); i < number.length(); j--, i++) { // value += num[Integer.parseInt(String.valueOf(number.charAt(i)))] // + unt[j]; // } // value = value + number.substring(number.length()); // if (value.substring(0, 1) == "一" && value.length() == 3) { // value = value.substring(1, value.length()); // } // return value; // } // // /** // * 将阿拉伯数字转换为中文大写数字 // * // * @param number 阿拉伯数字 // * @return 中文大写数字 // */ // public static String toChineseNumber(int number) { // return toChineseNumber(String.valueOf(number)); // } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy