可做成CommonFunctions的一些常用的字符串共通处理归纳一:字符串处理相关
/**
* nullToBlank() : 参数为null的场合,转化成空
*
* @param pValue : 字符串型参数
* @return : null -> ""
*/
public static String nullToBlank(String pValue) {
if(pValue == null || pValue.toLowerCase().equals("null")) {
return "";
} else {
return pValue;
}
}
/**
* nullToZero() : 参数为null的场合,转化成0
*
* @param pValue : 参数
* @return : null -> 0
*/
public static String nullToZero(String pValue) {
if (pValue == null || pValue.toLowerCase().equals("null") || pValue.equals("")) {
return "0";
} else {
return pValue;
}
}
/**
* splitToArray() : 将字符串按目标字符切分成数组后返回
*
* @param pTargetStr : 字符串
* @param pSplitFlg : 切分字符
* @return : 数组
*/
public static String[] splitToArray(String pTargetStr, String pSplitFlg) {
int index = -1;
ArrayList<String> strArray = new ArrayList<String>();
while ((index = pTargetStr.indexOf(pSplitFlg)) != -1) {
strArray.add(pTargetStr.substring(0, index));
pTargetStr = pTargetStr.substring(index + pSplitFlg.length());
}
strArray.add(pTargetStr);
String[] retStr = (String[]) strArray.toArray(new String[strArray.size()]);
return retStr;
}
/**
* splitToVector() : 将字符串按目标字符切分成数组后返回
*
* @param pTargetStr : 字符串
* @param pSplitFlg : 切分字符
* @return : 数组
*/
public static Vector<String> splitToVector(String pTargetStr, String pSplitFlg) {
Vector<String> retVal = null;
String[] arrayText = splitToArray(pTargetStr, pSplitFlg);
if (arrayText.length > 0) {
retVal = new Vector<String>(arrayText.length);
for (int i = 0; i < arrayText.length; i++) {
retVal.addElement(arrayText[i]);
}
}
return retVal;
}
/**
* joinToString() : 将目标数组按指定字符切分,合成字符串后返回
*
* @param pVecOriginal : 数组
* @param pSplitFlg : 切分字符
* @return : 字符串
*/
public static String joinToString(Vector<String> pVecOriginal, String pSplitFlg) {
String retVal = "";
for (int i = 0; i < pVecOriginal.size(); i++) {
retVal = retVal + pSplitFlg + pVecOriginal.elementAt(i).toString();
}
if (!(retVal.equals(""))) {
retVal = retVal.substring(1);
}
return nullToBlank(retVal);
}
/**
* paddingZeroL() : 在目标字符串的前面补齐0后返回
*
* @param pOriginalData : 字符串
* @param paddingLength : 补齐后字符串长度
* @return : 补齐后字符串
*/
public static String paddingZeroL(String pOriginalData, long pAllLength) {
String retVal = pOriginalData;
byte[] byteOfString = retVal.getBytes();
long cnt = pAllLength - byteOfString.length;
for (int i = 0; i < cnt; i++) {
retVal = "0" + retVal;
}
return nullToBlank(retVal);
}
/**
* paddingZeroR() : 在目标字符串的后面补齐0后返回
*
* @param pOriginalData : 字符串
* @param paddingLength : 补齐后字符串长度
* @return : 补齐后字符串
*/
public static String paddingZeroR(String pOriginalData, long pAllLength) {
String retVal = pOriginalData;
byte[] byteOfString = retVal.getBytes();
long cnt = pAllLength - byteOfString.length;
for (int i = 0; i < cnt; i++) {
retVal = retVal + "0";
}
return nullToBlank(retVal);
}
public static final String PRE = "PRE";
public static final String END = "END";
/**
* addStrPreOrEnd() : 在目标字符串的前面/后面补齐后返回
*
* @param pTargetStr : 目标字符串
* @param pAddFlg : 前面/后面
* @param pLength : 需要补齐的位数
* @param pAddStr : 需要补齐的字符串
* @return : 补齐后字符串
*/
public static String addStrPreOrEnd(String pTargetStr, String pAddFlg, int pLength, String pAddStr) {
String strAppend = "";
for (int i = 0; i < pLength; i++) {
strAppend += pAddStr;
}
if (pAddFlg.equals(PRE)) {
return strAppend + pTargetStr;
} else if (pAddFlg.equals(END)) {
return pTargetStr + strAppend;
} else {
return pTargetStr;
}
}
/**
* cutHeadderZero() : 将目标字符串的前面的0去掉后返回
*
* @param pTargetStr : 目标字符串
* @return : 去0后的字符串
*/
public static String cutHeadderZero(String pTargetStr) {
String retVal = pTargetStr;
String temp = pTargetStr;
while (retVal.length() > 0) {
if (retVal.substring(0, 1).equals("0")) {
retVal = retVal.substring(1);
}
if (retVal.equals(temp)) {
break;
}
temp = retVal;
}
return retVal;
}
/**
* getByteLengthByEncoding() : 按字符编码来计算字符串长度
*
* @param pTargetStr : 字符串
* @param pEncoding : 编码(MS932/...)
* @return : 字符串长度
*/
public static int getByteLengthByEncoding(String pTargetStr, String pEncoding) {
try {
if (pTargetStr == null) {
return 0;
}
byte[] b = pTargetStr.getBytes(pEncoding);
return b.length;
} catch (java.io.UnsupportedEncodingException e) {
return 0;
}
}
/**
* getByteLengthByCode() : 按Unicode/Shift_JIS来计算字符串长度
*
* @param pTargetStr : 字符串
* @return : 字符串长度
*/
public static int getByteLengthByCode(String pTargetStr) {
int lengthCnt = 0;
for (int i = 0; i < pTargetStr.length(); i++) {
int c = pTargetStr.charAt(i);
// Shift_JIS: 0x0 ~ 0x80, 0xa0 , 0xa1 ~ 0xdf , 0xfd ~ 0xff
// Unicode : 0x0 ~ 0x80, 0xf8f0, 0xff61 ~ 0xff9f, 0xf8f1 ~ 0xf8f3
if ( (c >= 0x0 && c < 0x81) || (c == 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4)) {
lengthCnt += 1;
} else {
lengthCnt += 2;
}
}
return lengthCnt;
}
/**
* getKeepLimitStr() : 当字符串超出指定长度时,以省略号形式显示
*
* @param pTargetStr : 字符串
* @param pLength : 指定长度
* @return : 字符串
*/
public static String getKeepLimitStr(String pTargetStr, int pLength) {
int orgLength = getByteLengthByEncoding(pTargetStr, "MS932");
if (orgLength > pLength) {
pLength -= 2;
int index = pLength / 2;
String retVal = pTargetStr.substring(0, index);
while (getByteLengthByEncoding(retVal, "MS932") < pLength) {
retVal = retVal + pTargetStr.substring(index, index + 1);
index++;
}
if (getByteLengthByEncoding(retVal, "MS932") > pLength) {
retVal = retVal.substring(0, retVal.length() - 1);
}
return retVal + "…";
}
return pTargetStr;
}