package com.ycsoft.commons.helper;
import java.io.Serializable;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
/**
* <code>java.lang.String</code>辅助类, 对字符串的一系列函数。
*
* @author hh
* @date Dec 3, 2009 1:40:01 PM
*/
public class StringHelper {
/**
* 判断字符串是否为空
* @return boolean 空返回true 不为空返回lase
*/
public static boolean isEmpty(String str) {
if (str == null || "".equals(str.trim()) || "null".equals(str)) {
return true;
} else {
return false;
}
}
/**
* 判断字符不为NULL,"",null值
*/
public static boolean isNotEmpty(String str) {
return !isEmpty(str);
}
/**
* 从开始位置,删除指定个数的字符串
* @return
*/
public static String delStartChar(String src ,int len){
if(null != src && src.length() > 0){
src = src.substring( len );
}
return src;
}
/**
* 从结束位置,删除指定个数的字符串
* @param src 源字符串
* @param len 要删除的长度
* @return
*/
public static String delEndChar(String src , int len){
if(null != src && src.length() > 0){
src = src.substring( 0 , src.length() - len );
}
return src;
}
/**
* 将给定的params按顺序拼接起来
* @param params 需要拼接的参数
* @return
*/
public static String append(Serializable ... params){
StringBuilder sb = new StringBuilder(100);
for (Serializable s : params) {
sb.append( s );
}
return sb.toString();
}
/**
* 如果是null或者空字符串,返回默认值,否则返回字符串本身.
* @param source 原字符串.
* @param defaultValue 默认值.
* @return
*/
public static String makeSureNotEmpty(String source ,String defaultValue){
return isNotEmpty(source) ? source : defaultValue;
}
/**
* 如果是null或者空字符串,返回"",否则返回字符串本身.
* @param source
* @return
*/
public static String makeSureNotEmpty(String source){
return isNotEmpty(source) ? source : "";
}
/**
* 清空左右两边空格
* @param cs
* @return
*/
public static String lrTrim(CharSequence cs) {
if (null == cs)
return null;
if (cs instanceof String)
return ((String) cs).trim();
int length = cs.length();
if (length == 0)
return cs.toString();
int l = 0;
int last = length - 1;
int r = last;
for (; l < length; l++) {
if (!Character.isWhitespace(cs.charAt(l)))
break;
}
for (; r > l; r--) {
if (!Character.isWhitespace(cs.charAt(r)))
break;
}
if (l > r)
return "";
else if (l == 0 && r == last)
return cs.toString();
return cs.subSequence(l, r + 1).toString();
}
/**
* 字符串左边补0
* @param str 字符串
* @param num 补0后长度
* @return
*/
public static String leftWithZero(String str,int num){
StringBuffer sb = new StringBuffer();
for(int i=0;i<num-str.length();i++){
sb.append("0");
}
return sb.append(str).toString();
}
/**
* 是否數字
* @param str
* @return
*/
public static boolean isNumeric(String str) {
for (int i = str.length(); --i >= 0;) {
if (!Character.isDigit(str.charAt(i))) {
return false;
}
}
return true;
}
/**
* 用分隔符将字符串数组连接成字符串
*
* @param args
* 字符串数组
* @param sep
* 分隔符
* @return
*/
public static final String join(String[] args, String sep) {
StringBuilder buf = new StringBuilder(256);
int j = args.length - 1;
for (int i = 0; i < j; i++) {
buf.append(args[i]).append(sep);
}
buf.append(args[j]);
return buf.toString();
}
/**
* 清除特殊字符
* @param str
* @return
* @throws PatternSyntaxException
*/
public static String StringFilter(String str) throws PatternSyntaxException {
// 只允许字母和数字
// String regEx = "[^a-zA-Z0-9]";
// 清除掉所有特殊字符
String regEx="[`~!@#$%^&*()+=|{}':;',//[//].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
return m.replaceAll("").trim();
}
/**
* 比较两个字符串是否都为空或者equals
* @param str1
* @param str2
*/
public static boolean bothEmptyOrEquals(String str1, String str2) {
if(isEmpty(str1) && isEmpty(str2)){
return true;
}
return (isEmpty(str1)?"":str1).equals(isEmpty(str2)?"":str2);
}
}