import java.io.IOException;
import java.util.ArrayList;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 类名称:StringUtil.java
*
*
*/
public class StringUtils {
/**
* 首字母小写<br>
* 如firstCharLowerCase("ABC")="aBC"<br>
* 如firstCharLowerCase("ABc")="aBc"<br>
* 如firstCharLowerCase("ABC123")="aBC123"<br>
*
* @param s String
* @return String
*/
public static String firstCharLowerCase(String s) {
if (s == null || "".equals(s)) {
return ("");
}
return s.substring(0, 1).toLowerCase() + s.substring(1);
}
/**
* <b>首字母大写</b><br>
* 如firstCharUpperCase("abc")="Abc"<br>
* 如firstCharUpperCase("aBc")="ABc"<br>
* 如firstCharUpperCase("abc123")="Abc123"<br>
*
* @param s String
* @return String
*/
public static String firstCharUpperCase(String s) {
if (s == null || "".equals(s)) {
return ("");
}
return s.substring(0, 1).toUpperCase() + s.substring(1);
}
/**
* 检查对象是否有效 obj != null && obj.toString().length() > 0<br/>
* 如isValid(null)=false<br/>
* 如isValid("")=false<br/>
* 如isValid("A")=true <br/>
*
* @param obj
* @return boolean
*/
public static boolean isValid(Object obj) {
return obj != null && obj.toString().length() > 0;
}
/**
* 判断字符串是否为null或者空<br/>
* 如isEmpty(null)=false<br/>
* 如isEmpty("")=false<br/>
* 如isEmpty("null")=false<br/>
* 如isEmpty("A")=true <br/>
*
* @param str
* @return
*/
public static boolean isEmpty(String str) {
return str == null || "".equals(str) || "null".equals(str.toLowerCase());
}
/**
* 字符串替换<br/>
* 如replace("abcedf","ab","mm")="mmcdef"<br/>
* 如replace("abcedf",null,"mm")="abcdef"<br/>
* 如replace("abcedf","ab",null)="abcdef"<br/>
*
* @param text 原始字符串
* @param repl 想被替换的内容
* @param with 替换后的内容
* @return
*/
public static String replace(String text, String repl, String with) {
if (text == null || repl == null || with == null || repl.length() == 0) {
return text;
}
StringBuffer buf = new StringBuffer(text.length());
int searchFrom = 0;
while (true) {
int foundAt = text.indexOf(repl, searchFrom);
if (foundAt == -1) {
break;
}
buf.append(text.substring(searchFrom, foundAt)).append(with);
searchFrom = foundAt + repl.length();
}
buf.append(text.substring(searchFrom));
return buf.toString();
}
/**
* 按照驼峰命名去掉"_"转换字符串<br/>
* 如toBeanPatternStr("bss_org_id")="bssOrgId"<br/>
* 如toBeanPatternStr("STAFF_NAME")="staffName"<br/>
*/
public static String toBeanPatternStr(String src) {
String dist = src.toLowerCase();
Pattern pattern = Pattern.compile("_([a-z0-9])");
Matcher matcher = pattern.matcher(dist);
while (matcher.find()) {
dist = dist.replaceFirst(matcher.group(0), matcher.group(1).toUpperCase());
}
return dist;
}
/**
* 把按照驼峰命名的字符串还原为带"_"格式<br/>
* toDbPatternStr("bssOrgCode")="bss_org_code"<br/>
* toDbPatternStr("staffName")="staff_name"<br/>
* toDbPatternStr("orginName")="orgin_name"<br/>
* add by liux at 20120737
*
* @param src
* @return
*/
public static String toDbPatternStr(String src) {
char[] chs = src.toCharArray();
String str = "";
for (char c : chs) {
if (Character.isUpperCase(c)) {
str += ("_" + c);
} else {
str += c;
}
}
return str.toLowerCase();
}
/***
* 判断数组对象中是否有以key结尾的字符串,有则返回true,否则返回false<br/>
* contains(["abc","def","ghi"],"bc")=true<br/>
* contains(["abc","def","ghi"],"jk")=false<br/>
* contains(["abc","def","ghi"],"ab")=false<br/>
* @param keys 字符数组
* @param key 包含键
* @return
*/
public static boolean contains(String[] keys, String key) {
for (int i = 0; i < keys.length; i++) {
if (key.endsWith(keys[i])) {
return true;
}
}
return false;
}
/***
* 将map对象转换为字符串数组
* @param map map对象
* @return 字符串数组
*/
@SuppressWarnings("unchecked")
public static String[] mapKeyToString(Map map) {
return new String[]{};
/*
Iterator iter = map.entrySet().iterator();
boolean start=true;
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
String key =(String) entry.getKey();
}
*/
}
/**
* 将ArrayList类型转换成String[]类型的数据<br/>
*
* @param arrayList ArrayList类型
* @return String[]类型
*/
@SuppressWarnings("unchecked")
public static String[] getStrings(ArrayList arrayList) {
String[] record = new String[arrayList.size()];
arrayList.toArray(record);
return record;
}
/**
* 将String[]类型的数据转换成list类型<br/>
*
* @param strings String[]类型
* @return ArrayList类型
*/
@SuppressWarnings("unchecked")
public static ArrayList toArrayList(String[] strings) {
ArrayList list = new ArrayList();
for (int i = 0; i < strings.length; i++) {
if (!((null == strings[i]) || "".equals(strings[i]))) {
list.add(strings[i]);
}
}
return list;
}
/**
* 转化为String对象,如果为空则返回"",否则返回原对象的字符串<br/>
* toString(null)=""<br/>
* toString("abc")=abc<br/>
*
* @return boolean 返回结果
*/
public static String toString(Object str) {
return str == null ? "" : str.toString();
}
/**
* 转化为String对象,如果为空则返回"",否则返回原对象的字符串
* asString(null)=""<br/>
* asString("abc")=abc<br/>
*
* @param obj 原对象
* @return boolean 返回结果
*/
public static String asString(Object obj) {
return obj != null ? obj.toString() : "";
}
/**
* 返回其中一个有效的对象
* tryThese([null,"abc"])="abc"<br/>
* tryThese(["","abc"])="abc"<br/>
* tryThese(["abc","efg"]])="abc"<br/>
*
* @param values
*/
public static String tryThese(String[] values) {
for (int i = 0; i < values.length; i++) {
String value = values[i];
if (value != null && value.trim().length() > 0) {
return value;
}
}
return null;
}
/**
* 字符串转换为JSON格式 字符串,在",\,/,\b,\f,\n前追加\<br/>
*
* @param s 转换前字符串
* @return 转换后字符串
*/
public static String string2Json(String s) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
switch (c) {
case '\"':
sb.append("\\\"");
break;
case '\\':
sb.append("\\\\");
break;
case '/':
sb.append("\\/");
break;
case '\b':
sb.append("\\b");
break;
case '\f':
sb.append("\\f");
break;
case '\n':
sb.append("\\n");
break;
case '\r':
sb.append("\\r");
break;
case '\t':
sb.append("\\t");
break;
default:
sb.append(c);
}
}
return sb.toString();
}
/**
* 对字符串采用Base64加密<br/>
* 如encodeString("abc")="YWJj"<br/>
* 如encodeString("123")="MTIz"<br/>
*
* @return 加密后字符串
* @throws IOException
*/
public static String encodeString(String str) throws IOException {
sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
String encodedStr = new String(encoder.encodeBuffer(str.getBytes()));
return encodedStr.trim();
}
/**
* 对字符串用Base64解码<br/>
* Decode a string using Base64 encoding.<br/>
* decodeString("YWJj")="abc"<br/>
* decodeString("MTIz")="123"<br/>
*
* @param str
* @return String
* @throws IOException
*/
public static String decodeString(String str) throws IOException {
sun.misc.BASE64Decoder dec = new sun.misc.BASE64Decoder();
String value = new String(dec.decodeBuffer(str));
return value;
}
/**
* 返回字符串的前len个字符.<br/>
* 例如:getLmtStr("abcdefg",3)=abc<br/>
* 例如:getLmtStr("abcdefg",4)=abcd<br/>
* add by liux at 20120727
*
* @param value String 源字符串
* @param len int 长度
* @return String 截取后的字符串
*/
public static String getLmtStr(String value, int len) throws Exception {
if (value == null || value.length() <= len)
return value;
return value.substring(0, len);
}
/**
* 判断是否为数字
*
* @param str
* @return
*/
public static boolean isNumeric(String str) {
for (int i = 0; i < str.length(); i++) {
System.out.println(str.charAt(i));
if (!Character.isDigit(str.charAt(i))) {
return false;
}
}
return true;
}
/**
* @param s
* @return 如果<tt>s</tt>为<tt>null</tt>或空白字符串返回<tt>true</tt>
*/
public static boolean isBlank(String s) {
return s == null ? true : s.trim().length() == 0;
}
/**
* 判断是否为null,如果为null转化为""
* @param str
* @return
*/
public String cecknull(String str) {
if (str == null || str.equals("null")) {
return "";
} else {
return str;
}
}
}