package com.newcore.pcms.util;
import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* <p>Title: ReservedDecimal</p>
* <p>Description: </p>
* @author MaRuifu
* @date 2017年1月9日下午10:27:55
*/
public class StringTools {
private static Logger logger = LoggerFactory.getLogger(StringTools.class);
/**
* 按照字节截取字符串,如果最后一位截取在汉字中则向前一位
* <p>Title: subStringByByte</p>
* <p>Description: 字节截取</p>
* @param str 所被截取的字符串
* @param len 截取字符串的字节长度
* @return
*/
public static String subStringByByte(String str, int subSLength){
if(subSLength<=0){
return "";
}else if (str == null)
return null;
else{
int tempSubLength = subSLength;
String subStr = str.substring(0, str.length()<subSLength ? str.length() : subSLength);
int subStrByetsL=0;
try {
subStrByetsL = subStr.getBytes("GBK").length;
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
while (subStrByetsL > tempSubLength){
int subSLengthTemp = --subSLength;
subStr = str.substring(0, subSLengthTemp>str.length() ? str.length() : subSLengthTemp);
try {
subStrByetsL = subStr.getBytes("GBK").length;
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
return subStr;
}
}
/**
* 返回字节的长度
* <p>Title: retStringByByte</p>
* <p>Description: </p>
* @param str
* @return
*/
public static int retStringByByte(String str) {
if(str==null){
return 0;
}
int a = 0;
try {
a = str.getBytes("GBK").length;
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
return a;
}
/**
*
* <p>Title: retStringlistByByte</p>
* <p>Description: </p>
* @param str
* @return
*
*/
public static List<String> retStringlistByByte(String str,int len) {
List<String> list = new ArrayList<String>();
if(StringTools.retStringByByte(str)<=len){
list.add(str);
}else{
String send = str;
for (int i = 0; i < 1;) {
list.add(subStringByByte(send,len));
send = retStringByte(send, len);
if("".equals(send)){
break;
}
}
}
return list;
}
/**
* 返回截取之后的字符串
* <p>Title: retStringByte</p>
* <p>Description: </p>
* @param str
* @param len
* @return
*/
public static String retStringByte(String str,int len) {
String sendWord=str;
int substr = StringTools.subStringByByte(sendWord, len).length();
sendWord=sendWord.substring(substr, sendWord.length());
return sendWord;
}
}