亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中Reflect反射工具類、String字符串工具類怎么用

發布時間:2021-08-19 14:13:24 來源:億速云 閱讀:137 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關java中Reflect反射工具類、String字符串工具類怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

Reflect反射工具類

package com.jarvis.base.util;

/**
 * 
 * 
 * @Title: ReflectHelper.java
 * @Package com.jarvis.base.util
 * @Description: 反射工具類
 * @version V1.0 
 */
public class ReflectHelper {

 /**
 * 提指定的類載入以系統中
 *
 * @param name
 *  類名稱
 * @return 類對象
 * @throws ClassNotFoundException
 */
 public static Class<?> classForName(String name) throws ClassNotFoundException {
 try {
 return Thread.currentThread().getContextClassLoader().loadClass(name);
 }

 catch (ClassNotFoundException e) {
 e.printStackTrace();
 System.err.println("類[" + name + "]加載出錯");
 } catch (SecurityException e) {
 e.printStackTrace();
 System.err.println("類[" + name + "]加載出錯");
 }
 return Class.forName(name);
 }

 /**
 * 根據名稱生成指定的對象
 *
 * @param name
 *  類名稱
 * @return 具體的對象,若發生異常,則返回null
 */
 public static Object objectForName(String name) {
 try {
 return Class.forName(name).newInstance();
 } catch (Exception ex) {
 ex.printStackTrace();
 System.err.println("類[" + name + "]獲取對象實例出錯");
 }
 return null;
 }
}

String字符串工具類

package com.jarvis.base.util;

import java.io.UnsupportedEncodingException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 
 * 
 * @Title: StringHelper.java
 * @Package com.jarvis.base.utils
 * @Description:
 * @version V1.0 字符串處理工具類。
 */
public final class StringHelper {

 /**
 * 描述: 構造方法
 */
 private StringHelper() {
 }

 /**
 * 空字符串
 */
 public static final String EMPTY_STRING = "";

 /**
 * 點
 */
 public static final char DOT = '.';

 /**
 * 下劃線
 */
 public static final char UNDERSCORE = '_';

 /**
 * 逗點及空格
 */
 public static final String COMMA_SPACE = ", ";

 /**
 * 逗點
 */
 public static final String COMMA = ",";

 /**
 * 開始括號
 */
 public static final String OPEN_PAREN = "(";

 /**
 * 結束括號
 */
 public static final String CLOSE_PAREN = ")";

 /**
 * 單引號
 */
 public static final char SINGLE_QUOTE = '\'';

 /**
 * 回車
 */
 public static final String CRLF = "\r\n";

 /**
 * 常量 12
 */
 public static final int FIANL_TWELVE = 12;

 /**
 * 十六進制常量 0x80
 */
 public static final int HEX_80 = 0x80;

 /**
 * 十六進制常量 0xff
 */
 public static final int HEX_FF = 0xff;

 /**
 * 把字符數組,轉化為一個字符
 *
 * @param seperator
 *  字符分隔符
 * @param strings
 *  數組對象
 * @return 字符串
 */
 public static String join(String seperator, String[] strings) {
 int length = strings.length;
 if (length == 0) {
 return EMPTY_STRING;
 }
 StringBuffer buf = new StringBuffer(length * strings[0].length()).append(strings[0]);
 for (int i = 1; i < length; i++) {
 buf.append(seperator).append(strings[i]);
 }
 return buf.toString();
 }

 /**
 * 把迭代對象轉化為一個字符串
 *
 * @param seperator
 *  分隔符
 * @param objects
 *  迭代器對象
 * @return 字符串
 */
 public static String join(String seperator, Iterator<?> objects) {
 StringBuffer buf = new StringBuffer();
 if (objects.hasNext()) {
 buf.append(objects.next());
 }
 while (objects.hasNext()) {
 buf.append(seperator).append(objects.next());
 }
 return buf.toString();
 }

 /**
 * 把兩個字符串數組的元素用分隔符連接,生成新的數組,生成的數組以第一個字符串數組為參照,與其長度相同。
 *
 * @param x
 *  字符串數組
 * @param seperator
 *  分隔符
 * @param y
 *  字符串數組
 * @return 組合后的字符串數組
 */
 public static String[] add(String[] x, String seperator, String[] y) {
 String[] result = new String[x.length];
 for (int i = 0; i < x.length; i++) {
 result[i] = x[i] + seperator + y[i];
 }
 return result;
 }

 /**
 * 生成一個重復的字符串,如需要重復*10次,則生成:**********。
 *
 * @param string
 *  重復元素
 * @param times
 *  重復次數
 * @return 生成后的字符串
 */
 public static String repeat(String string, int times) {
 StringBuffer buf = new StringBuffer(string.length() * times);
 for (int i = 0; i < times; i++) {
 buf.append(string);
 }
 return buf.toString();
 }

 /**
 * 字符串替換處理,把舊的字符串替換為新的字符串,主要是通過字符串查找進行處理
 *
 * @param source
 *  需要進行替換的字符串
 * @param old
 *  需要進行替換的字符串
 * @param replace
 *  替換成的字符串
 * @return 替換處理后的字符串
 */
 public static String replace(String source, String old, String replace) {
 StringBuffer output = new StringBuffer();

 int sourceLen = source.length();
 int oldLen = old.length();

 int posStart = 0;
 int pos;

 // 通過截取字符串的方式,替換字符串
 while ((pos = source.indexOf(old, posStart)) >= 0) {
 output.append(source.substring(posStart, pos));

 output.append(replace);
 posStart = pos + oldLen;
 }

 // 如果還有沒有處理的字符串,則都添加到新字符串后面
 if (posStart < sourceLen) {
 output.append(source.substring(posStart));
 }

 return output.toString();
 }

 /**
 * 替換字符,如果指定進行全替換,必須設wholeWords=true,否則只替換最后出現的字符。
 *
 * @param template
 *  字符模板
 * @param placeholder
 *  需要替換的字符
 * @param replacement
 *  新的字符
 * @param wholeWords
 *  是否需要全替換,true為需要,false為不需要。如果不需要,則只替換最后出現的字符。
 * @return 替換后的新字符
 */
 public static String replace(String template, String placeholder, String replacement, boolean wholeWords) {
 int loc = template.indexOf(placeholder);
 if (loc < 0) {
 return template;
 } else {
 final boolean actuallyReplace = wholeWords || loc + placeholder.length() == template.length()
 || !Character.isJavaIdentifierPart(template.charAt(loc + placeholder.length()));
 String actualReplacement = actuallyReplace ? replacement : placeholder;
 return new StringBuffer(template.substring(0, loc)).append(actualReplacement).append(
 replace(template.substring(loc + placeholder.length()), placeholder, replacement, wholeWords))
 .toString();
 }
 }

 /**
 * 替換字符,只替換第一次出現的字符串。
 *
 * @param template
 *  字符模板
 * @param placeholder
 *  需要替換的字符串
 * @param replacement
 *  新字符串
 * @return 替換后的字符串
 */
 public static String replaceOnce(String template, String placeholder, String replacement) {
 int loc = template.indexOf(placeholder);
 if (loc < 0) {
 return template;
 } else {
 return new StringBuffer(template.substring(0, loc)).append(replacement)
 .append(template.substring(loc + placeholder.length())).toString();
 }
 }

 /**
 * 把字符串,按指字的分隔符分隔為字符串數組
 *
 * @param seperators
 *  分隔符
 * @param list
 *  字符串
 * @return 字符串數組
 */
 public static String[] split(String list, String seperators) {
 return split(list, seperators, false);
 }

 /**
 * 把字符串,按指字的分隔符分隔為字符串數組
 *
 * @param seperators
 *  分隔符
 * @param list
 *  字符串
 * @param include
 *  是否需要把分隔符也返回
 * @return 字符串數組
 */
 public static String[] split(String list, String seperators, boolean include) {
 StringTokenizer tokens = new StringTokenizer(list, seperators, include);
 String[] result = new String[tokens.countTokens()];
 int i = 0;
 while (tokens.hasMoreTokens()) {
 result[i++] = tokens.nextToken();
 }
 return result;
 }

 /**
 * 提取字符串中,以.為分隔符后的所有字符,如string.exe,將返回exe。
 *
 * @param qualifiedName
 *  字符串
 * @return 提取后的字符串
 */
 public static String unqualify(String qualifiedName) {
 return unqualify(qualifiedName, ".");
 }

 /**
 * 提取字符串中,以指定分隔符后的所有字符,如string.exe,將返回exe。
 *
 * @param qualifiedName
 *  字符串
 * @param seperator
 *  分隔符
 * @return 提取后的字符串
 */
 public static String unqualify(String qualifiedName, String seperator) {
 return qualifiedName.substring(qualifiedName.lastIndexOf(seperator) + 1);
 }

 /**
 * 提取字符串中,以.為分隔符以前的字符,如string.exe,則返回string
 *
 * @param qualifiedName
 *  字符串
 * @return 提取后的字符串
 */
 public static String qualifier(String qualifiedName) {
 int loc = qualifiedName.lastIndexOf(".");
 if (loc < 0) {
 return EMPTY_STRING;
 } else {
 return qualifiedName.substring(0, loc);
 }
 }

 /**
 * 向字符串數組中的所有元素添加上后綴
 *
 * @param columns
 *  字符串數組
 * @param suffix
 *  后綴
 * @return 添加后綴后的數組
 */
 public static String[] suffix(String[] columns, String suffix) {
 if (suffix == null) {
 return columns;
 }
 String[] qualified = new String[columns.length];
 for (int i = 0; i < columns.length; i++) {
 qualified[i] = suffix(columns[i], suffix);
 }
 return qualified;
 }

 /**
 * 向字符串加上后綴
 *
 * @param name
 *  需要添加后綴的字符串
 * @param suffix
 *  后綴
 * @return 添加后綴的字符串
 */
 public static String suffix(String name, String suffix) {
 return (suffix == null) ? name : name + suffix;
 }

 /**
 * 向字符串數組中的所有元素,添加上前綴
 *
 * @param columns
 *  需要添加前綴的字符串數組
 * @param prefix
 *  prefix
 * @return
 */
 public static String[] prefix(String[] columns, String prefix) {
 if (prefix == null) {
 return columns;
 }
 String[] qualified = new String[columns.length];
 for (int i = 0; i < columns.length; i++) {
 qualified[i] = prefix + columns[i];
 }
 return qualified;
 }

 /**
 * 向字符串添加上前綴
 *
 * @param name
 *  需要添加前綴的字符串
 * @param prefix
 *  前綴
 * @return 添加前綴后的字符串
 */
 public static String prefix(String name, String prefix) {
 return (prefix == null) ? name : prefix + name;
 }

 /**
 * 判斷字符串是否為"true"、"t",如果是,返回true,否則返回false
 *
 * @param tfString
 *  需要進行判斷真/假的字符串
 * @return true/false
 */
 public static boolean booleanValue(String tfString) {
 String trimmed = tfString.trim().toLowerCase();
 return trimmed.equals("true") || trimmed.equals("t");
 }

 /**
 * 把對象數組轉化為字符串
 *
 * @param array
 *  對象數組
 * @return 字符串
 */
 public static String toString(Object[] array) {
 int len = array.length;
 if (len == 0) {
 return StringHelper.EMPTY_STRING;
 }
 StringBuffer buf = new StringBuffer(len * FIANL_TWELVE);
 for (int i = 0; i < len - 1; i++) {
 buf.append(array[i]).append(StringHelper.COMMA_SPACE);
 }
 return buf.append(array[len - 1]).toString();
 }

 /**
 * 描述:把數組中的所有元素出現的字符串進行替換,把舊字符串替換為新字符數組的所有元素,只替換第一次出現的字符。
 * 
 * @param string
 *  需要替換的數組
 * @param placeholders
 *  需要替換的字符串
 * @param replacements
 *  新字符串數組
 * @return 替換后的字符串數組
 */
 public static String[] multiply(String string, Iterator<?> placeholders, Iterator<?> replacements) {
 String[] result = new String[] { string };
 while (placeholders.hasNext()) {
 result = multiply(result, (String) placeholders.next(), (String[]) replacements.next());
 }
 return result;
 }

 /**
 * 把數組中的所有元素出現的字符串進行替換,把舊字符串替換為新字符數組的所有元素,只替換第一次出現的字符。
 *
 * @param strings
 *  需要替換的數組
 * @param placeholder
 *  需要替換的字符串
 * @param replacements
 *  新字符串數組
 * @return 替換后的字符串數組
 */
 private static String[] multiply(String[] strings, String placeholder, String[] replacements) {
 String[] results = new String[replacements.length * strings.length];
 int n = 0;
 for (int i = 0; i < replacements.length; i++) {
 for (int j = 0; j < strings.length; j++) {
 results[n++] = replaceOnce(strings[j], placeholder, replacements[i]);
 }
 }
 return results;
 }

 /**
 * 統計Char在字符串中出現在次數,如"s"在字符串"string"中出現的次數
 *
 * @param string
 *  字符串
 * @param character
 *  需要進行統計的char
 * @return 數量
 */
 public static int count(String string, char character) {
 int n = 0;
 for (int i = 0; i < string.length(); i++) {
 if (string.charAt(i) == character) {
 n++;
 }
 }
 return n;
 }

 /**
 * 描述:計算字符串中未引用的字符
 * 
 * @param string
 *  字符串
 * @param character
 *  字符
 * @return 未引用的字符數
 */
 public static int countUnquoted(String string, char character) {
 if (SINGLE_QUOTE == character) {
 throw new IllegalArgumentException("Unquoted count of quotes is invalid");
 }

 int count = 0;
 int stringLength = string == null ? 0 : string.length();
 boolean inQuote = false;
 for (int indx = 0; indx < stringLength; indx++) {
 if (inQuote) {
 if (SINGLE_QUOTE == string.charAt(indx)) {
 inQuote = false;
 }
 } else if (SINGLE_QUOTE == string.charAt(indx)) {
 inQuote = true;
 } else if (string.charAt(indx) == character) {
 count++;
 }
 }
 return count;
 }

 /**
 * 
 * 描述:描述:判斷字符串是否為空,如果為true則為空。與isEmpty不同,如果字符為" "也視為空字符
 * 
 * @param str
 *  字符串
 * @return
 */
 public static boolean isBlank(String str) {
 boolean b = true;// 20140507 modify by liwei 修復對" "為false的bug
 if (str == null) {
 b = true;
 } else {
 int strLen = str.length();
 if (strLen == 0) {
 b = true;
 }

 for (int i = 0; i < strLen; i++) {
 if (!Character.isWhitespace(str.charAt(i))) {
 b = false;
 break;
 }
 }
 }

 return b;
 }

 /**
 * 
 * 描述:描述:判斷字符串是否為空,如果為true則不為空。與isNotEmpty不同,如果字符為" "也視為空字符
 * 
 * @param str
 *  字符串
 * @return
 */
 public static boolean isNotBlank(String str) {
 int strLen = 0;
 if (str != null)
 strLen = str.length();
 if (str == null || strLen == 0) {
 return false;
 }
 for (int i = 0; i < strLen; i++) {
 if (!Character.isWhitespace(str.charAt(i))) {
 return true;
 }
 }

 return false;
 }

 /**
 * 判斷字符串是否非空,如果為true則不為空
 *
 * @param string
 *  字符串
 * @return true/false
 */
 public static boolean isNotEmpty(String string) {
 return string != null && string.length() > 0;
 }

 /**
 * 判斷字符串是否空,如果為true則為空
 *
 * @param str
 *  字符串
 * @return true/false
 */

 public static boolean isEmpty(String str) {
 if (str == null || str.trim().length() == 0) {
 return true;
 }
 return false;
 }

 /**
 * 向字符串添加上前綴,并以.作為分隔符
 *
 * @param name
 *  需要添加前綴的字符串
 * @param prefix
 *  前綴
 * @return 添加前綴后的字符串
 */
 public static String qualify(String name, String prefix) {
 if (name.startsWith("'")) {
 return name;
 }

 return new StringBuffer(prefix.length() + name.length() + 1).append(prefix).append(DOT).append(name).toString();
 }

 /**
 * 向字符串數組中的所有字符添加上前綴,前以點作為分隔符
 *
 * @param names
 *  字符串數組
 * @param prefix
 *  前綴
 * @return 添加前綴后的字符串數組
 */
 public static String[] qualify(String[] names, String prefix) {
 if (prefix == null) {
 return names;
 }
 int len = names.length;
 String[] qualified = new String[len];
 for (int i = 0; i < len; i++) {
 qualified[i] = qualify(prefix, names[i]);
 }
 return qualified;
 }

 /**
 * 在字符串中,查找字符第一次出現的位置
 *
 * @param sqlString
 *  原字符串
 * @param string
 *  需要查找到字符串
 * @param startindex
 *  開始位置
 * @return 第一個出現的位置
 */
 public static int firstIndexOfChar(String sqlString, String string, int startindex) {
 int matchAt = -1;
 for (int i = 0; i < string.length(); i++) {
 int curMatch = sqlString.indexOf(string.charAt(i), startindex);
 if (curMatch >= 0) {
 if (matchAt == -1) {
 matchAt = curMatch;
 } else {
 matchAt = Math.min(matchAt, curMatch);
 }
 }
 }
 return matchAt;
 }

 /**
 * 從字符串中提取指字長度的字符。區分中英文。<br>
 * 如果需要加省略號,則將在指定長度上少取3個字符寬度,末尾加上"......"。
 *
 * @param string
 *  字符串
 * @param length
 *  要取的字符長度,此為中文長度,英文僅當作半個字符。
 * @param appendSuspensionPoints
 *  是否需要加省略號
 * @return 提取后的字符串
 */
 public static String truncate(String string, int length, boolean appendSuspensionPoints) {
 if (isEmpty(string) || length < 0) {
 return string;
 }

 if (length == 0) {
 return "";
 }

 int strLength = string.length(); // 字符串字符個數
 int byteLength = byteLength(string); // 字符串字節長度
 length *= 2; // 換成字節長度

 // 判斷是否需要加省略號
 boolean needSus = false;
 if (appendSuspensionPoints && byteLength >= length) {
 needSus = true;

 // 如果需要加省略號,則要少取2個字節用來加省略號
 length -= 2;
 }

 StringBuffer result = new StringBuffer();
 int count = 0;
 for (int i = 0; i < strLength; i++) {
 if (count >= length) { // 取完了
 break;
 }

 char c = string.charAt(i);

 if (isLetter(c)) { // Ascill字符
 result.append(c);
 count += 1;
 } else { // 非Ascill字符
 if (count == length - 1) { // 如果只要取1個字節了,而后面1個是漢字,就放空格
 result.append(" ");
 count += 1;
 } else {
 result.append(c);
 count += 2;
 }
 }
 }

 if (needSus) {
 result.append("...");
 }

 return result.toString();
 }

 /**
 * 描述:判斷一個字符是Ascill字符還是其它字符(如漢,日,韓文字符)
 * 
 * @param c
 *  需要判斷的字符
 * @return
 */
 public static boolean isLetter(char c) {
 int k = HEX_80;
 return c / k == 0 ? true : false;
 }

 /**
 * 得到一個字符串的長度,顯示的長度,一個漢字或日韓文長度為2,英文字符長度為1
 *
 * @param s
 *  ,需要得到長度的字符串
 * @return int, 得到的字符串長度
 */
 public static int byteLength(String s) {
 char[] c = s.toCharArray();
 int len = 0;
 for (int i = 0; i < c.length; i++) {
 if (isLetter(c[i])) {
 len++;
 } else {
 len += 2;
 }
 }
 return len;
 }

 /**
 * 從字符串中提取指字長度的字符
 *
 * @param string
 *  字符串
 * @param length
 *  字符長度
 * @return 提取后的字符串
 */
 public static String truncate(String string, int length) {
 if (isEmpty(string)) {
 return string;
 }

 if (string.length() <= length) {
 return string;
 } else {
 return string.substring(0, length);
 }
 }

 /**
 * 去丟字符的左側空格
 *
 * @param value
 *  字符串
 * @return 去丟左側空格后的字符串
 */
 public static String leftTrim(String value) {
 String result = value;
 if (result == null) {
 return result;
 }
 char ch[] = result.toCharArray();
 int index = -1;
 for (int i = 0; i < ch.length; i++) {
 if (!Character.isWhitespace(ch[i])) {
 break;
 }
 index = i;
 }

 if (index != -1) {
 result = result.substring(index + 1);
 }
 return result;
 }

 /**
 * 去丟字符的右側空格
 *
 * @param value
 *  字符串
 * @return 去右側空格后的字符串
 */
 public static String rightTrim(String value) {
 String result = value;
 if (result == null) {
 return result;
 }
 char ch[] = result.toCharArray();
 int endIndex = -1;
 for (int i = ch.length - 1; i > -1; i--) {
 if (!Character.isWhitespace(ch[i])) {
 break;
 }
 endIndex = i;
 }

 if (endIndex != -1) {
 result = result.substring(0, endIndex);
 }
 return result;
 }

 /**
 * 把null字符串轉化為""
 *
 * @param source
 *  空字符串
 * @return 轉化后的字符串
 */
 public static String n2s(String source) {
 return source != null ? source : "";
 }

 /**
 * 如果字符串為空,則返回默認字符串
 *
 * @param source
 *  源字符串
 * @param defaultStr
 *  默認字符串
 * @return 轉換后的字符串
 */
 public static String n2s(String source, String defaultStr) {
 return source != null ? source : defaultStr;
 }

 /**
 * 將字符串格式化成 HTML 以SCRIPT變量 主要是替換單,雙引號,以將內容格式化輸出,適合于 HTML 中的顯示輸出
 *
 * @param str
 *  要格式化的字符串
 * @return 格式化后的字符串
 */
 public static String toScript(String str) {
 if (str == null) {
 return null;
 }

 String html = new String(str);

 html = replace(html, "\"", "\\\"");
 html = replace(html, "\r\n", "\n");
 html = replace(html, "\n", "\\n");
 html = replace(html, "\t", " ");
 html = replace(html, "\'", "\\\'");

 html = replace(html, " ", " &nbsp;");

 html = replace(html, "</script>", "<\\/script>");
 html = replace(html, "</SCRIPT>", "<\\/SCRIPT>");

 return html;
 }

 /**
 * 同于String#trim(),但是檢測null,如果原字符串為null,則仍然返回null
 *
 * @param s
 *  s
 * @return
 */
 public static String trim(String s) {
 return s == null ? s : s.trim();
 }

 /**
 * 對字符串進行空格處理,如果字符串為null呀是空字符串, 則返回默認的數字。
 *
 * @param source
 *  需要進行處理的字符串
 * @param defaultValue
 *  缺省值
 * @return 字符串的數字值
 */
 public static int strTrim(String source, int defaultValue) {
 if (isEmpty(source)) {
 return defaultValue;
 }
 try {
 source = source.trim();
 int value = (new Integer(source)).intValue();
 return value;
 } catch (Exception ex) {
 ex.printStackTrace();
 System.err.println("數字轉換出錯,請檢查數據來源。返回默認值");
 return defaultValue;
 }
 }

 /**
 * 對字符串進行過濾處理,如果字符串是null或為空字符串, 返回默認值。
 *
 * @param source
 *  需要進行處理的字符串
 * @param defaultValue
 *  缺省值
 * @return 過濾后的字符串
 */
 public static String strTrim(String source, String defaultValue) {
 if (StringHelper.isEmpty(source)) {
 return defaultValue;
 }
 try {
 source = source.trim();
 return source;
 } catch (Exception ex) {
 ex.printStackTrace();
 System.err.println("字符串去空格失敗,返回默認值");
 return defaultValue;
 }
 }

 /**
 * 描述:為了防止跨站腳本攻擊,轉換<>這種尖括號。
 * 
 * @param source
 * @return
 */
 public static String encodeURL(String source) {
 if (source == null) {
 return null;
 }
 String html = new String(source);
 html = replace(html, "<", "&lt;");
 html = replace(html, ">", "&gt;");
 html = replace(html, "\"", "&quot;");
 html = replace(html, " ", "&nbsp;");
 html = replace(html, "\'", "&acute;");
 html = replace(html, "\\", "&#092;");
 html = replace(html, "&", "&amp;");
 html = replace(html, "\r", "");
 html = replace(html, "\n", "");
 html = replace(html, "(", "&#40;");
 html = replace(html, ")", "&#41;");
 html = replace(html, "[", "&#91;");
 html = replace(html, "]", "&#93;");
 html = replace(html, ";", "&#59;");
 html = replace(html, "/", "&#47;");

 return html;
 }

 /**
 * 把字符串中一些特定的字符轉換成html字符,如&、<、>、"號等
 *
 * @param source
 *  需要進行處理的字符串
 * @return 處理后的字符串
 */
 public static String encodeHtml(String source) {
 if (source == null) {
 return null;
 }

 String html = new String(source);

 html = replace(html, "&", "&amp;");
 html = replace(html, "<", "&lt;");
 html = replace(html, ">", "&gt;");
 html = replace(html, "\"", "&quot;");
 html = replace(html, " ", "&nbsp;");
 html = replace(html, "\'", "&acute;");
 return html;
 }

 /**
 * 把一些html的字符串還原
 *
 * @param source
 *  需要進行處理的字符串
 * @return 處理后的字符串
 */
 public static String decodeHtml(String source) {
 if (source == null) {
 return null;
 }

 String html = new String(source);

 html = replace(html, "&amp;", "&");
 html = replace(html, "&lt;", "<");
 html = replace(html, "&gt;", ">");
 html = replace(html, "&quot;", "\"");
 html = replace(html, " ", "&nbsp;");

 html = replace(html, "\r\n", "\n");
 html = replace(html, "\n", "<br>\n");
 html = replace(html, "\t", " ");
 html = replace(html, " ", " &nbsp;");

 return html;
 }

 /**
 * 判斷字符串是否為布爾值,如true/false等
 *
 * @param source
 *  需要進行判斷的字符串
 * @return 返回字符串的布爾值
 */
 public static boolean isBoolean(String source) {
 if (source.equalsIgnoreCase("true") || source.equalsIgnoreCase("false")) {
 return true;
 }
 return false;
 }

 /**
 * 去除字符串中的最后字符
 *
 * @param str
 *  原字符串
 * @param strMove
 *  要去除字符 比如","
 * @return 去除后的字符串
 */
 public static String lastCharTrim(String str, String strMove) {
 if (isEmpty(str)) {
 return "";
 }

 String newStr = "";
 if (str.lastIndexOf(strMove) != -1 && str.lastIndexOf(strMove) == str.length() - 1) {
 newStr = str.substring(0, str.lastIndexOf(strMove));
 }
 return newStr;
 }

 /**
 * 清除字符串里的html代碼
 *
 * @param html
 *  需要進行處理的字符串
 * @return 清除html后的代碼
 */
 public static String clearHtml(String html) {
 if (isEmpty(html)) {
 return "";
 }

 String patternStr = "(<[^>]*>)";
 Pattern pattern = Pattern.compile(patternStr, Pattern.CASE_INSENSITIVE);
 Matcher matcher = null;
 StringBuffer bf = new StringBuffer();
 try {
 matcher = pattern.matcher(html);
 boolean first = true;
 int start = 0;
 int end = 0;
 while (matcher.find()) {
 start = matcher.start(1);
 if (first) {
 bf.append(html.substring(0, start));
 first = false;
 } else {
 bf.append(html.substring(end, start));
 }

 end = matcher.end(1);
 }
 if (end < html.length()) {
 bf.append(html.substring(end));
 }
 html = bf.toString();
 return html;
 } catch (Exception ex) {
 ex.printStackTrace();
 System.err.println("清除html標簽失敗");
 } finally {
 pattern = null;
 matcher = null;
 }
 return html;
 }

 /**
 * 把文杯格式轉換為html格式
 *
 * @param content
 *  轉換的內容
 * @return
 */
 public static String textFmtToHtmlFmt(String content) {
 content = StringHelper.replace(content, " ", "&nbsp;");
 content = StringHelper.replace(content, "\r\n", "<br>");
 content = StringHelper.replace(content, "\n", "<br>");

 return content;
 }

 /**
 * 
 * 描述:大寫英文字母轉換成小寫
 * 
 * @param strIn
 *  字符串參數
 * @return
 */
 public static String toLowerStr(String strIn) {
 String strOut = new String(); // 輸出的字串
 int len = strIn.length(); // 參數的長度
 int i = 0; // 計數器
 char ch; // 存放參數的字符

 while (i < len) {
 ch = strIn.charAt(i);

 if (ch >= 'A' && ch <= 'Z') {
 ch = (char) (ch - 'A' + 'a');
 }

 strOut += ch;
 i++;
 }
 return strOut;
 }

 /**
 * 
 * 描述:小寫英文字母轉換成大寫
 * 
 * @param strIn
 *  字符串參數
 * @return
 */
 public static String toUpperStr(String strIn) {
 String strOut = new String(); // 輸出的字串
 int len = strIn.length(); // 參數的長度
 int i = 0; // 計數器
 char ch; // 存放參數的字符

 while (i < len) {
 ch = strIn.charAt(i);

 if (ch >= 'a' && ch <= 'z') {
 ch = (char) (ch - 'a' + 'A');
 }

 strOut += ch;
 i++;
 }
 return strOut;
 }

 /**
 * 貨幣縮寫,提供億和萬兩個單位,并精確到小數點2位 切換到新的算法:對數算法
 * 
 * @param original
 * @return
 */
 public static String currencyShortFor(String original) {
 if (StringHelper.isBlank(original)) {
 return "";
 } else {
 String shortFor = "";
 double shortForValue = 0;
 DecimalFormat df = new DecimalFormat("#.00");

 try {
 double account = Double.parseDouble(original);
 if (account / 100000000 > 1) {
 shortForValue = account / 100000000;
 shortFor = df.format(shortForValue) + "億";
 } else if (account / 10000 > 1) {
 shortForValue = account / 10000;
 shortFor = df.format(shortForValue) + "萬";
 } else {
 shortFor = original;
 }
 } catch (NumberFormatException e) {
 e.printStackTrace();
 System.err.println("字符串[" + original + "]轉換成數字出錯");
 }

 return shortFor;
 }
 }

 /**
 * 將日期格式由yyyyMMdd裝換為yyyy-MM-dd
 * 
 * @param date
 *  Date string whose format is yyyyMMdd.
 * @return
 */
 public static String formatDate(String date) {
 if (isBlank(date) || date.length() < 8) {
 return "";
 }
 StringBuffer dateBuf = new StringBuffer();
 dateBuf.append(date.substring(0, 4));
 dateBuf.append("-");
 dateBuf.append(date.substring(4, 6));
 dateBuf.append("-");
 dateBuf.append(date.substring(6, 8));
 return dateBuf.toString();
 }

 /**
 * 判斷是否為整數
 * 
 * @param str
 *  傳入的字符串
 * @return 是整數返回true,否則返回false
 */
 public static boolean isInteger(String str) {
 Pattern pattern = Pattern.compile("^\\d+(\\.0)?$", Pattern.CASE_INSENSITIVE);
 return pattern.matcher(str).matches();

 }

 /**
 * 用于=中英文混排標題中限定字符串長度。保證顯示長度最多只相差一個全角字符。
 * 
 * @param string
 *  需要截取的字符串
 * @param byteCount
 *  字節數(度量標準為中文為兩個字節,ASCII字符為一個字節,這樣子,剛好匹配ASCII為半角字符,而中文為全角字符,
 *  保證在網頁上中英文混合的句子長度一致)
 * @return
 * @throws UnsupportedEncodingException
 */
 public static String substring(String string, int byteCount) throws UnsupportedEncodingException {
 if (isBlank(string)) {
 return string;
 }
 byte[] bytes = string.getBytes("Unicode");// 使用UCS-2編碼.
 int viewBytes = 0; // 表示當前的字節數(英文為單字節,中文為雙字節的表示方法)
 int ucs2Bytes = 2; // 要截取的字節數,從第3個字節開始,前兩位為位序。(UCS-2的表示方法)
 // UCS-2每個字符使用兩個字節來編碼。
 // ASCII n+=1,i+=2
 // 中文 n+=2,i+=2
 for (; ucs2Bytes < bytes.length && viewBytes < byteCount; ucs2Bytes++) {
 // 奇數位置,如3、5、7等,為UCS2編碼中兩個字節的第二個字節
 if (ucs2Bytes % 2 == 1) {
 viewBytes++; // 低字節,無論中英文,都算一個字節。
 } else {
 // 當UCS2編碼的第一個字節不等于0時,該UCS2字符為漢字,一個漢字算兩個字節
 // 高位時,僅中文的高位算一字節。
 if (bytes[ucs2Bytes] != 0) {
 viewBytes++;
 }
 }
 }
 // 截一半的漢字要保留
 if (ucs2Bytes % 2 == 1) {
 ucs2Bytes = ucs2Bytes + 1;
 }
 String result = new String(bytes, 0, ucs2Bytes, "Unicode");// 將字節流轉換為java默認編碼UTF-8的字符串
 if (bytes.length > ucs2Bytes) {
 result += "...";
 }
 return result;
 }

 /**
 * 描述:根據長度截斷字串
 * 
 * @param str
 *  字串
 * @param length
 *  截取長度
 * @return
 */
 public static String[] splite(String str, int length) {
 if (StringHelper.isEmpty(str)) {
 return null;
 }
 String[] strArr = new String[(str.length() + length - 1) / length];
 for (int i = 0; i < strArr.length; i++) {
 if (str.length() > i * length + length - 1) {
 strArr[i] = str.substring(i * length, i * length + length - 1);
 } else {
 strArr[i] = str.substring(i * length);
 }
 }
 return strArr;
 }

 /**
 * 描述:把某一個字符變成大寫
 * 
 * @param str
 *  str 字串
 * @param index
 *  第幾個字符
 * @return
 */
 public static String toUpOneChar(String str, int index) {
 return toUpOrLowOneChar(str, index, 1);
 }

 /**
 * 描述:把某一個字符變成小寫 作者:李建 時間:Dec 17, 2010 9:42:32 PM
 * 
 * @param str
 *  str 字串
 * @param index
 *  第幾個字符
 * @return
 */
 public static String toLowOneChar(String str, int index) {
 return toUpOrLowOneChar(str, index, 0);
 }

 /**
 * 描述:把某一個字符變成大寫或小寫 作者:李建 時間:Dec 17, 2010 9:39:32 PM
 * 
 * @param str
 *  字串
 * @param index
 *  第幾個字符
 * @param upOrLow
 *  大小寫 1:大寫;0小寫
 * @return
 */
 public static String toUpOrLowOneChar(String str, int index, int upOrLow) {
 if (StringHelper.isNotEmpty(str) && index > -1 && index < str.length()) {
 char[] chars = str.toCharArray();
 if (upOrLow == 1) {
 chars[index] = Character.toUpperCase(chars[index]);
 } else {
 chars[index] = Character.toLowerCase(chars[index]);
 }
 return new String(chars);
 }
 return str;
 }

 /**
 * 將字符串用分隔符斷裂成字符串列表
 * 
 * @param value
 *  原字符串
 * @param separator
 *  分隔字符
 * @return 結果列表
 */
 public static List<String> split2List(String value, String separator) {
 List<String> ls = new ArrayList<String>();
 int i = 0, j = 0;
 while ((i = value.indexOf(separator, i)) != -1) {
 ls.add(value.substring(j, i));
 ++i;
 j = i;
 }
 ls.add(value.substring(j));
 return ls;
 }

 /**
 * 將數組用分隔符連接成新字符串(split的逆方法)
 * 
 * @param strs
 *  字符串數組
 * @param sep
 *  分隔符
 * @return 結果字符串
 */
 public static String join(String[] strs, String sep) {
 StringBuilder res = new StringBuilder();
 for (int i = 0; i < strs.length; i++) {
 res.append(strs[i] + sep);
 }
 return res.substring(0, res.length() - sep.length());
 }

 /**
 * 獲得一個UUID
 * 
 * @return String UUID
 */
 public static String getUUID() {
 String str = UUID.randomUUID().toString();// 標準的UUID格式為:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx(8-4-4-4-12)
 // 去掉"-"符號,不用replaceAll的原因與split一樣,replaceAll支持正則表達式,頻繁使用時效率不夠高(當然偶爾用一下影響也不會特別嚴重)
 return join(split(str, "-"), "");
 }

 /**
 * <pre>
 * 例: String strVal="This is a dog"; String
 * strResult=CTools.replace(strVal,"dog","cat"); 結果: strResult equals
 * "This is cat"
 *
 * @param strSrc
 *  要進行替換操作的字符串
 * @param strOld
 *  要查找的字符串
 * @param strNew
 *  要替換的字符串
 * @return 替換后的字符串
 * 
 *  <pre>
 */
 public static final String replaceAllStr(String strSrc, String strOld, String strNew) {
 if (strSrc == null || strOld == null || strNew == null)
 return "";

 int i = 0;

 if (strOld.equals(strNew)) // 避免新舊字符一樣產生死循環
 return strSrc;

 if ((i = strSrc.indexOf(strOld, i)) >= 0) {
 char[] arr_cSrc = strSrc.toCharArray();
 char[] arr_cNew = strNew.toCharArray();

 int intOldLen = strOld.length();
 StringBuffer buf = new StringBuffer(arr_cSrc.length);
 buf.append(arr_cSrc, 0, i).append(arr_cNew);

 i += intOldLen;
 int j = i;

 while ((i = strSrc.indexOf(strOld, i)) > 0) {
 buf.append(arr_cSrc, j, i - j).append(arr_cNew);
 i += intOldLen;
 j = i;
 }

 buf.append(arr_cSrc, j, arr_cSrc.length - j);

 return buf.toString();
 }

 return strSrc;
 }

 /**
 * 用于將字符串中的特殊字符轉換成Web頁中可以安全顯示的字符串 可對表單數據據進行處理對一些頁面特殊字符進行處理如'
 * <','>','"',''','&'
 * 
 * @param strSrc
 *  要進行替換操作的字符串
 * @return 替換特殊字符后的字符串
 * @since 1.0
 */

 public static String htmlEncode(String strSrc) {
 if (strSrc == null)
 return "";

 char[] arr_cSrc = strSrc.toCharArray();
 StringBuffer buf = new StringBuffer(arr_cSrc.length);
 char ch;

 for (int i = 0; i < arr_cSrc.length; i++) {
 ch = arr_cSrc[i];

 if (ch == '<')
 buf.append("&lt;");
 else if (ch == '>')
 buf.append("&gt;");
 else if (ch == '"')
 buf.append("&quot;");
 else if (ch == '\'')
 buf.append("&#039;");
 else if (ch == '&')
 buf.append("&amp;");
 else
 buf.append(ch);
 }

 return buf.toString();
 }

 /**
 * 用于將字符串中的特殊字符轉換成Web頁中可以安全顯示的字符串 可對表單數據據進行處理對一些頁面特殊字符進行處理如'
 * <','>','"',''','&'
 * 
 * @param strSrc
 *  要進行替換操作的字符串
 * @param quotes
 *  為0時單引號和雙引號都替換,為1時不替換單引號,為2時不替換雙引號,為3時單引號和雙引號都不替換
 * @return 替換特殊字符后的字符串
 * @since 1.0
 */
 public static String htmlEncode(String strSrc, int quotes) {

 if (strSrc == null)
 return "";
 if (quotes == 0) {
 return htmlEncode(strSrc);
 }

 char[] arr_cSrc = strSrc.toCharArray();
 StringBuffer buf = new StringBuffer(arr_cSrc.length);
 char ch;

 for (int i = 0; i < arr_cSrc.length; i++) {
 ch = arr_cSrc[i];
 if (ch == '<')
 buf.append("&lt;");
 else if (ch == '>')
 buf.append("&gt;");
 else if (ch == '"' && quotes == 1)
 buf.append("&quot;");
 else if (ch == '\'' && quotes == 2)
 buf.append("&#039;");
 else if (ch == '&')
 buf.append("&amp;");
 else
 buf.append(ch);
 }

 return buf.toString();
 }

 /**
 * 和htmlEncode正好相反
 * 
 * @param strSrc
 *  要進行轉換的字符串
 * @return 轉換后的字符串
 * @since 1.0
 */
 public static String htmlDecode(String strSrc) {
 if (strSrc == null)
 return "";
 strSrc = strSrc.replaceAll("&lt;", "<");
 strSrc = strSrc.replaceAll("&gt;", ">");
 strSrc = strSrc.replaceAll("&quot;", "\"");
 strSrc = strSrc.replaceAll("&#039;", "'");
 strSrc = strSrc.replaceAll("&amp;", "&");
 return strSrc;
 }

 /**
 * 實際處理 return toChineseNoReplace(null2Blank(str));
 * 
 * @param str
 *  要進行處理的字符串
 * @return 轉換后的字符串
 * @see fs_com.utils.CTools#toChinese
 * @see fs_com.utils.CTools#null2Blank
 */
 public static String toChineseAndHtmlEncode(String str, int quotes) {
 try {
 if (str == null) {
 return "";
 } else {
 str = str.trim();
 str = new String(str.getBytes("ISO8859_1"), "GBK");
 String htmlEncode = htmlEncode(str, quotes);
 return htmlEncode;
 }
 } catch (Exception exp) {
 return "";
 }
 }

 /**
 * 把null值和""值轉換成&nbsp; 主要應用于頁面表格格的顯示
 * 
 * @param str
 *  要進行處理的字符串
 * @return 轉換后的字符串
 */
 public static String str4Table(String str) {
 if (str == null)
 return "&nbsp;";
 else if (str.equals(""))
 return "&nbsp;";
 else
 return str;
 }

}

關于“java中Reflect反射工具類、String字符串工具類怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

日照市| 清原| 平昌县| 克拉玛依市| 琼中| 阜宁县| 正安县| 砚山县| 达拉特旗| 海盐县| 平和县| 浙江省| 亳州市| 绥芬河市| 抚远县| 承德县| 巴中市| 安陆市| 突泉县| 海兴县| 高雄县| 上林县| 定兴县| 南溪县| 天气| 临澧县| 朔州市| 岑巩县| 慈溪市| 乐业县| 保亭| 潞城市| 肇州县| 贵港市| 华阴市| 教育| 根河市| 高邮市| 新安县| 巨野县| 扶沟县|