字符串工具類


import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.sxd.da.base.exception.UncheckedException;

/**
 * 字符串工具類。
 */
public abstract class StringUtils {
 /**
  * 判斷指定字符串是否爲空。
  *
  * @param str
  *            待判斷的字符串
  * @return 返回指定字符串是否爲空。
  */
 public static Boolean isEmpty(String str) {
  return str == null || str.isEmpty();
 }

 /**
  * 判斷指定字符串是否不爲空。
  *
  * @param str
  *            待判斷的字符串
  * @return 返回指定字符串是否不爲空。
  */
 public static Boolean isNotEmpty(String str) {
  return !isEmpty(str);
 }

 /**
  * 判斷指定字符串是否爲空字符串。
  *
  * @param str
  *            待判斷的字符串
  * @return 返回指定字符串是否爲空字符串。
  */
 public static Boolean isBlank(String str) {
  if (isEmpty(str)) {
   return true;
  }
  for (char c : str.toCharArray()) {
   if (!Character.isWhitespace(c)) {
    return false;
   }
  }
  return true;
 }

 /**
  * 判斷指定字符串是否不爲空字符串。
  *
  * @param str
  *            待判斷的字符串
  * @return 返回指定字符串是否不爲空字符串。
  */
 public static Boolean isNotBlank(String str) {
  return !isBlank(str);
 }

 /**
  * 截取指定分隔符前的字符串內容。
  *
  * @param str
  *            待截取的字符串
  * @param separator
  *            分隔符
  * @return 返回指定分隔符前的字符串內容。
  */
 public static String substringBefore(String str, String separator) {
  Assert.notEmpty(str);
  Assert.notEmpty(separator);

  int pos = str.indexOf(separator);
  if (pos == -1) {
   return str;
  }
  return str.substring(0, pos);
 }

 /**
  * 截取最後一個分隔符前的字符串內容。
  *
  * @param str
  *            待截取的字符串
  * @param separator
  *            分隔符
  * @return 返回最後一個分隔符前的字符串內容。
  */
 public static String substringBeforeLast(String str, String separator) {
  Assert.notEmpty(str);
  Assert.notEmpty(separator);

  int pos = str.lastIndexOf(separator);
  if (pos == -1) {
   return str;
  }
  return str.substring(0, pos);
 }

 /**
  * 截取指定分隔符後的字符串內容。
  *
  * @param str
  *            待截取的字符串
  * @param separator
  *            分隔符
  * @return 返回指定分隔符後的字符串內容。
  */
 public static String substringAfter(String str, String separator) {
  Assert.notEmpty(str);
  Assert.notEmpty(separator);

  int pos = str.indexOf(separator);
  if (pos == -1) {
   return "";
  }
  return str.substring(pos + separator.length());
 }

 /**
  * 截取最後一個分隔符後的字符串內容。
  *
  * @param str
  *            待截取的字符串
  * @param separator
  *            分隔符
  * @return 返回最後一個分隔符後的字符串內容。
  */
 public static String substringAfterLast(String str, String separator) {
  Assert.notEmpty(str);
  Assert.notEmpty(separator);

  int pos = str.lastIndexOf(separator);
  if (pos == -1 || pos == (str.length() - separator.length())) {
   return "";
  }
  return str.substring(pos + separator.length());
 }
 
 /**
  *
  * @param str
  * @param beginIndex
  * @param endIndex
  * @return
  * @since 2013-12-19
  * @author Sunm
  */
 public static String substring(String str, int beginIndex, int endIndex) {
  if(endIndex > str.length() -1) {
   endIndex = str.length();
  }
 
  return str.substring(beginIndex, endIndex);
 }
 
 /**
  * 截取字符串,有截取時增加後綴.
  * @param str
  * @param beginIndex
  * @param endIndex
  * @param suffix
  * @return
  * @since 2013-12-19
  * @author Sunm
  */
 public static String substringWithSuffix(String str, int beginIndex, int endIndex, String suffix) {
  int len = endIndex - beginIndex;
  if(len > str.length()) {
   suffix = "";
  }
 
  return substring(str, beginIndex, endIndex) + suffix;
 }
 
 /**
  * 截取字符串,有截取時增加後綴(...).
  * @param str
  * @param beginIndex
  * @param endIndex
  * @return
  * @since 2013-12-19
  * @author Sunm
  */
 public static String substringWithSuffix(String str, int beginIndex, int endIndex) {
  return substringWithSuffix(str, beginIndex, endIndex, "...");
 }

 /**
  * 截取指定起始位置和截取長度的字符串。
  *
  * @param str
  *            待截取的字符串
  * @param pos
  *            起始位置
  * @param len
  *            截取長度
  * @return 返回指定起始位置和截取長度的字符串。
  */
 public static String mid(String str, int pos, int len) {
  Assert.notEmpty(str);
  Assert.isTrue(pos >= 0 && pos <= str.length());
  Assert.isTrue(len >= 0);

  if (str.length() <= (pos + len)) {
   return str.substring(pos);
  }
  return str.substring(pos, pos + len);
 }

 /**
  * 將一個字符串數組用指定分隔符串聯起來。
  *
  * @param strs
  *            字符串數組
  * @param separator
  *            分隔符
  * @return 返回串聯起來的字符串。
  */
 public static String join(String[] strs, String separator) {
  Assert.notEmpty(strs);
  Assert.notNull(separator);

  StringBuffer buf = new StringBuffer(256);
  for (String str : strs) {
   buf.append(str + separator);
  }

  String result = buf.toString();
  if (!separator.isEmpty()) {
   result = substringBeforeLast(result, separator);
  }
  return result;
 }

 /**
  * 將一個字符串列表用指定分隔符串聯起來。
  *
  * @param strs
  *            字符串數組
  * @param separator
  *            分隔符
  * @return 返回串聯起來的字符串數組。
  */
 public static String join(List<String> strs, String separator) {
  return join(strs.toArray(new String[] {}), separator);
 }

 /**
  * 對字符串進行字符集轉換。
  *
  * @param str
  *            字符串
  * @param origEncoding
  *            原字符集編碼
  * @param destEncoding
  *            新字符集編碼
  * @return 返回轉換後的字符串。
  */
 public static String encode(String str, String origEncoding,
   String destEncoding) {
  try {
   return new String(str.getBytes(origEncoding), destEncoding);
  } catch (UnsupportedEncodingException e) {
   throw new UncheckedException("對字符串進行字符集轉換時發生異常", e);
  }
 }
 
 public static String toString(Object object) {
  if(object == null) {
   return "";
  }
 
  return object.toString();
 }
 
 /**
  * 把一個字符創填充爲固定長度字符串
  *
  * @param str源字符串
  * @param parame填充的字符
  * @param length固定長度
  * @return
  */
 public static String setPre(String str,String parame,Integer length){
  if(str.length()>=length){
   return str;
  }
  else{
   for(int i=str.length();i<length;i=str.length()){
    str=parame+str;
   }
   return str;
  }
 }
 /**
  * 兩個數組作減法運算,arr1-arry2
  * @param arr1
  * @param arr2
  * @return
  */
 public static Object [] ArrayToRomeve(Object [] arr1,Object [] arr2){
  if(arr2==null||arr2.length==0||arr1==null||arr1.length==0){
   return arr1;
  }
  List<Object> list1=new ArrayList<Object>();
  List<Object> list2=new ArrayList<Object>();
  for(int i=0;i<arr1.length;i++){
   list1.add(arr1[i]);
  }
  for(int i=0;i<arr2.length;i++){
   list2.add(arr2[i]);
  }
  list1.removeAll(list2);
  arr1=new String[list1.size()];
  for(int i=0;i<list1.size();i++){
   arr1[i]=list1.get(i);
  }
  return arr1;
 }
 /**
  * 將字符串按數據庫的存儲位數標準截取指定長度,一個漢字在數據庫佔兩位
  * @param content
  * @param len
  */
 public static String cutLength(String content,Integer len){
  Pattern pattern=Pattern.compile("[\u4e00-\u9fa5]*");
  Matcher m=pattern.matcher(content);
  int len2=0;
  while(m.find()){
   len2+=m.group().length();
  }
  int len1=content.length();
  if(len1+len2>len){
   content=content.substring(0,len1-len2-100)+"長度超出"+len+",已採取截斷處理";
  }
  return content;
 }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章