import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* 有关字符串处理的类
* @author zhb
*
*/
public class StringUtil {
private static final Log logger = LogFactory.getLog(StringUtil.class);
/**
* 截取固定大小的字符串
* @param str
* @param size (汉字字符)个数
* @return map 截取结果集合
*/
public static HashMap<Integer, String> splitString(String str,int size, HashMap<Integer, String> map) {
if (map == null || map.size()==0) {
map = new HashMap();
}
String realstring="";
byte[] b=null;
int count=0;
if(getsub(str).length()>=size*2) {
for(int i=0;i<str.length();i++) {
b=str.substring(i,i+1).getBytes();
if(b.length==2)
count=count+2;
else
count=count+1;
if(count==size*2) {
realstring=upsub(getsub(str).substring(0,size*2));
map.put(map.size(), realstring);
splitString(upsub(getsub(str).substring(size*2)), size, map);
break;
} else if (count > size*2) {
realstring=upsub(getsub(str).substring(0,size*2-1));
map.put(map.size(), realstring);
splitString(upsub(getsub(str).substring(size*2-1)), size, map);
break;
}
}
} else {
realstring = str;
map.put(map.size(), realstring);
}
return map;
}
/**
* 编码转换
* @param str
* @return
*/
public static String getsub(String str) {
try {
return new String(str.getBytes("GBK"), "ISO8859_1");
} catch (UnsupportedEncodingException e) {
logger.error(e.getMessage(), e);
return null;
}
}
/**
* 编码转换
* @param str
* @return
*/
public static String upsub(String str) {
try {
return new String(str.getBytes("ISO8859_1"), "GBK");
} catch (UnsupportedEncodingException e) {
logger.error(e.getMessage(), e);
return null;
}
}
}