package com.joinsoft.service.utils;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* 处理字符串的工具类。
*/
public class StringUtils {
/**
*
* 对string 进行trim,如果值为null返回"",其他情况string.trim()。
* @param str 待处理的字符串
* @return
*
* @author admin
* @since 2014年8月14日下午2:17:35
*/
public static String clean(String str) {
return org.apache.commons.lang3.StringUtils.trimToEmpty(str);
}
/**
*
* 返回str.trim(),如果值为null或string.trim()为"",则返回指定的默认值。
* @param str
* @param defaultValue 默认值
* @return
*
* @author tyr
* @since 2014-9-22下午4:19:27
*/
public static String cleanDefault(String str, int defaultValue) {
if (isEmpty(clean(str))) {
return String.valueOf(defaultValue);
}else {
return clean(str);
}
}
public static String cleanDefault(String str, String defaultValue) {
if (isEmpty(clean(str))) {
return String.valueOf(defaultValue);
}else {
return clean(str);
}
}
/**
*
* 判断字符串是否为空。
* <p>严格判断字符串是否为空。为空的标准 str==null or str.length()==0</p>
* @param str
* @return
*
* @author admin
* @since 2014年8月14日下午2:18:52
*/
public static boolean isEmpty(String str) {
return org.apache.commons.lang3.StringUtils.isEmpty(str);
}
/**
*
* 判断字符串是否不为空。
* <p>严格判断字符串是否不为空。不为空的标准 str!=null or str.length()!=0</p>
* @param str
* @return
*
* @author admin
* @since 2014年8月14日下午2:18:52
*/
public static boolean isNotEmpty(String str) {
if(equals(str,"null")){
return false;
}
return !isEmpty(str);
}
/**
* 字符串比对方法,两个比较的字符串都能为空,不会报空指针异常
* @param str1
* @param str2
* @return
*/
public static boolean equals(String str1,String str2){
return org.apache.commons.lang3.StringUtils.equals(str1,str2);
}
/**
*
* 判断字符串是否为空。
* <p>宽松判断字符串是否为空。为空的标准 [str==null or str.length()==0 && 空格]</p>
* @param str
* @return
*
* @author admin
* @since 2014年8月14日下午2:19:32
*/
public static boolean isBlank(String str) {
if("null".equals(str)){//add by zfx
return true;
}
return org.apache.commons.lang3.StringUtils.isBlank(str);
}
/**
*
* 字符串转换为大写形式。
* @param str
* @return
*
* @author admin
* @since 2014年8月14日下午2:21:24
*/
public static String upperCase(String str) {
return org.apache.commons.lang3.StringUtils.upperCase(str);
}
/**
*
* 字符串转换为小写形式。
* @param str
* @return
*
* @author admin
* @since 2014年8月14日下午2:21:47
*/
public static String lowerCase(String str) {
return org.apache.commons.lang3.StringUtils.lowerCase(str);
}
/**
*
* 对字符串进行反转。
* @param str
* @return
*
* @author admin
* @since 2014年8月14日下午2:22:09
*/
public static String reverse(String str) {
return org.apache.commons.lang3.StringUtils.reverse(str);
}
/**
*
* 在字符串中移除指定的字符串 (eg: remove("abc","c")-->"ab")。
* @param str 待处理的字符串
* @param remove 需要移除的字符串
* @return 处理后的字符串
*
* @author admin
* @since 2014年8月14日下午2:22:30
*/
public static String remove(String str, String remove) {
return org.apache.commons.lang3.StringUtils.remove(str, remove);
}
/**
*
* 判断字符串每位是否为数值 [eg:"abc"-->false "a13"-->false "123"-->true "12.11"-->false]。
* @param str
* @return
*
* @author
* @since 2014年8月14日下午2:23:32
*/
public static boolean isNumeric(String str) {
return org.apache.commons.lang3.StringUtils.isNumeric(str);
}
/**
*
* 用指定的字符串补齐足够的长度。
* <p>%方法详述(简单方法可不必)%</p>
* @param str 需要补齐的字符串
* @param addstr 补齐字符
* @param lenstr 补齐长度
* @return
*
* @author admin
* @since 2014年8月14日下午2:24:59
*/
public static String addZero(String str,String addstr, int lenstr) {
String value = clean(str);
while (value.length() < lenstr) {
value = addstr + value;
}
return value;
}
/**
*
* 截取字符串左边的零。
* @param teststr
* @return
*
* @author admin
* @since 2014年8月14日下午2:25:49
*/
public static String removeZero(String teststr) {
String str = clean(teststr);
if ("".equals(str)) {
return "";
}
String tmpStr = str.substring(0, 1);
while ("0".equals(tmpStr) && str.length() > 0) {
str = str.substring(1, str.length());
tmpStr = str.substring(0, 1);
}
return str;
}
/**
*
* 将str用多个分隔符进行切分。
* <p>将str用多个分隔符进行切分
* 示例:StringTokenizerUtils.split("1,2;3 4"," ,;")
* 返回: ["1","2","3","4"]
* </p>
* @param str
* @param seperators
* @return
*
* @author admin
* @since 2014年8月14日下午2:26:21
*/
public static String[] split(String str, String seperators) {
StringTokenizer tokenlizer = new StringTokenizer(str, seperators);
List<Object> result = new ArrayList<Object>();
while (tokenlizer.hasMoreElements()) {
Object s = tokenlizer.nextElement();
result.add(s);
}
return (String[]) result.toArray(new String[result.size()]);
}
/**
*
* 输入一个字符串,判断是否为空,如果为空设定默认值。
* <p>
* 输入一个字符串,判断是否为空(为空的标准 str==null or str.length()==0 or 字符串为空格
* </p>
* @param str
* @param defaultstr
* @return
*
* @author admin
* @since 2014年8月14日下午2:28:09
*/
public static String defaultIfBlank(String str, String defaultstr) {
return org.apache.commons.lang3.StringUtils.defaultIfBlank(str,
defaultstr);
}
/**
*
* 把数组中的值 转换成sql in需要的形式 ["a","b"]--->('a','b')。
* @param str
* @return
*
* @author
* @since 2014年8月14日下午2:38:40
*/
public static String toInString(String[] str){
StringBuffer buffer=new StringBuffer();
buffer.append("(");
for (int i = 0; i < str.length-1; i++) {
buffer.append("'"+str[i]+"',");
}
buffer.append("'"+str[str.length-1]+"'");
buffer.append(")");
return buffer.toString();
}
/**
*
* 功能: 对字符串进行前置补0。
* <p>%方法详述(简单方法可不必)%</p>
* @param str
* @param lenstr
* @return
*
* @author
* @since 2014-9-5下午4:25:25
*/
public static String addZero(String str, int lenstr) {
String value = clean(str);
while (value.length() < lenstr) {
value = "0" + value;
}
return value;
}
/**
*
* 功能: 返回不以科学计算法为显示的double值
*
* @return
*
* 作者:仝玉锐
*/
public static String getFomartDouble(double value) {
double out = 0.00;
DecimalFormat df = new DecimalFormat("0.00");
if (StringUtils.isEmpty(value + "")) {
out = 0d;
} else {
out = new Double(value);
}
String str = df.format(out);
return str;
}
public static String getFomartDouble(String str) {
double out = 0.00;
if(StringUtils.isEmpty(str)){
out = 0d;
} else {
out = new Double(Double.parseDouble(str));
}
return getFomartDouble(out);
}
/**
* 通过数组拼接数据项当做条件进行查询,
* 返回值 in('','');
* @param dataString 条件
* @param columnName 字段名称
* @return
*
* @author 杨慕孔
* @since 2018年8月17日上午9:40:58
*/
public static String getInCondition(String[] dataString,String columnName){
String str = "";
if(dataString == null || columnName == null ||"".equals(columnName)) return null;
if(dataString != null && dataString.length>0){
str = columnName + " in(";
for (int i = 0; i < dataString.length; i++) {
str +="'"+dataString[i]+"',";
}
str = str.substring(0,str.length()-1);
str += ")";
}
return str;
}
/***
* FUNCTION: 去掉最后一个字符
*
* @param
*
* @version: 2012-12-14
* **/
public static String removeLastStr(String sourceStr){
if(!StringUtils.isBlank(sourceStr)){
sourceStr = sourceStr.substring(0, sourceStr.length()-1);
return sourceStr;
}
return null;
}
/**
* 将数组转化为list
*
* @param ids 被转的字符串
* @param splitStr 分隔符
* @return
*
* @author 高东朋
* @since 2018年9月27日下午2:29:05
*/
public static List<String> strTransList(String ids, String splitStr) {
if(!StringUtils.isBlank(ids)){
List<String> idList = new ArrayList<String>();
String[] idArr = ids.split(splitStr);
if(idArr != null && idArr.length > 0){
for(int t=0;t<idArr.length;t++){
idList.add(idArr[t]);
}
}
return idList;
}
return null;
}
/**
* 生成指定位数的随机数字字符串
* @param length
* @return str
* 作者: 李伟国
*/
public static String createRandomNumber(int length){
String str = "";
while(str.length() < length){
str += Math.round(Math.random()*10);
}
return str;
}
/**
* 方法名:subStrByByteLen <br>
* 功能描述:通过字节长度截取字符串(截取字符串长度<=字节长度)
*
* @param text 待截取文本
* @param length 截取字节长度
* @param encode 字符编码
* @return java.lang.String
*
* @author dc
* @date 2019/11/4
*/
public static String subStrByByteLen(String text, int length, String encode)
throws UnsupportedEncodingException {
if (text == null) {
return null;
}
StringBuilder sb = new StringBuilder();
int currentLength = 0;
for (char c : text.toCharArray()) {
currentLength += String.valueOf(c).getBytes(encode).length;
if (currentLength <= length) {
sb.append(c);
} else {
break;
}
}
return sb.toString();
}
/**
* 方法名:splitStrByByteLen <br>
* 功能描述:通过字节长度切分字符串(分割的字符串长度<=字节长度)
*
* @param text 待分割文本
* @param length 分割字节长度
* @param encode 字符编码
* @return java.util.List<java.lang.String>
*
* @author dc
* @date 2019/11/4
*/
public static List<String> splitStrByByteLen(String text, int length, String encode)
throws UnsupportedEncodingException {
if (text == null) {
return null;
}
String content = new String(text);
List<String> list = new ArrayList<>();
while(content.length() > 0) {
String s = subStrByByteLen(content, length, encode);
list.add(s);
content = content.substring(s.length());
}
return list;
}
/**
* 方法名:splitStr <br>
* 功能描述:通过字符长度切分字符串
*
* @param text
* @param length
* @return java.util.List<java.lang.String>
*
* @author dc
* @date 2019/11/28
*/
public static List<String> splitStr(String text, int length) {
if (text == null) {
return null;
}
int size = text.length() / length;
if (text.length() % length != 0) {
size += 1;
}
List<String> list = new ArrayList<String>();
for (int index = 0; index < size; index++) {
String childStr = substring(text, index * length,
(index + 1) * length);
list.add(childStr);
}
return list;
}
/**
* 方法名:substring <br>
* 功能描述:
*
* @param str
* @param beginIndex
* @param endIndex
* @return java.lang.String
*
* @author dc
* @date 2019/11/28
*/
public static String substring(String str, int beginIndex, int endIndex) {
if (beginIndex > str.length()){
return null;
}
if (endIndex > str.length()) {
return str.substring(beginIndex, str.length());
} else {
return str.substring(beginIndex, endIndex);
}
}
}