주소록 대량등록 치환문자 바이트수 계산로직 수정

This commit is contained in:
itn 2023-07-20 17:50:35 +09:00
parent 68eda9ff2c
commit b51956b8d9

View File

@ -1663,6 +1663,7 @@ public class AddrController {
//String phoneRegExp = "^01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4})[.-]?(\\d{4})$"; //String phoneRegExp = "^01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4})[.-]?(\\d{4})$";
String phoneRegExp = "^(050[234567]{1}|01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$"; String phoneRegExp = "^(050[234567]{1}|01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$";
String charset = "euc-kr";
boolean isSuccess = true; boolean isSuccess = true;
String msg = ""; String msg = "";
int resultCnt = 0; int resultCnt = 0;
@ -1734,14 +1735,14 @@ public class AddrController {
tempAddrVO.setAddrNm(null); tempAddrVO.setAddrNm(null);
}else { }else {
String tmpNm = addrVO.getNameList()[i].trim().replaceAll("§", ","); String tmpNm = addrVO.getNameList()[i].trim().replaceAll("§", ",");
int nmLen = tmpNm.length(); int nmLen = tmpNm.getBytes(charset).length;
if(nmLen > 12) { if(nmLen >= 20) {
//isSuccess = false; //isSuccess = false;
//msg = "이름 항목의 내용(\" " + tmpNm + " \")이 길이를 초과하여 입력되었습니다. 12글자 이하로 입력해 주세요."; //msg = "이름 항목의 내용(\" " + tmpNm + " \")이 길이를 초과하여 입력되었습니다. 12글자 이하로 입력해 주세요.";
//break; //break;
tempAddrVO.setAddrNm(addrVO.getNameList()[i].trim().replaceAll("§", ",").substring(0, 12)); tempAddrVO.setAddrNm(subStringBytes(addrVO.getNameList()[i].replaceAll("§", ","), 20, 2));
}else { }else {
tempAddrVO.setAddrNm(addrVO.getNameList()[i].trim().replaceAll("§", ",")); tempAddrVO.setAddrNm(addrVO.getNameList()[i].trim().replaceAll("§", ","));
} }
@ -1769,14 +1770,13 @@ public class AddrController {
}else { }else {
String tmpInfo1 = addrVO.getInfo1List()[i].replaceAll("§", ","); String tmpInfo1 = addrVO.getInfo1List()[i].replaceAll("§", ",");
int info1Len = tmpInfo1.length(); int info1Len = tmpInfo1.getBytes(charset).length;
if(info1Len > 20) { if(info1Len >= 40) {
//isSuccess = false; //isSuccess = false;
//msg = "[*1*] 항목의 내용(\" " + tmpInfo1 + " \")이 길이를 초과하여 입력되었습니다. 20글자 이하로 입력해 주세요."; //msg = "[*1*] 항목의 내용(\" " + tmpInfo1 + " \")이 길이를 초과하여 입력되었습니다. 20글자 이하로 입력해 주세요.";
//break; //break;
tempAddrVO.setAddrInfo1(subStringBytes(addrVO.getInfo1List()[i].replaceAll("§", ","), 40, 2));
tempAddrVO.setAddrInfo1(addrVO.getInfo1List()[i].replaceAll("§", ",").substring(0, 20));
}else { }else {
tempAddrVO.setAddrInfo1(addrVO.getInfo1List()[i].replaceAll("§", ",")); tempAddrVO.setAddrInfo1(addrVO.getInfo1List()[i].replaceAll("§", ","));
} }
@ -1791,14 +1791,14 @@ public class AddrController {
tempAddrVO.setAddrInfo2(null); tempAddrVO.setAddrInfo2(null);
}else { }else {
String tmpInfo2 = addrVO.getInfo2List()[i].replaceAll("§", ","); String tmpInfo2 = addrVO.getInfo2List()[i].replaceAll("§", ",");
int info2Len = tmpInfo2.length(); int info2Len = tmpInfo2.getBytes(charset).length;
if(info2Len > 20) { if(info2Len >= 40) {
//isSuccess = false; //isSuccess = false;
//msg = "[*2*] 항목의 내용(\" " + tmpInfo2 + " \")이 길이를 초과하여 입력되었습니다. 20글자 이하로 입력해 주세요."; //msg = "[*2*] 항목의 내용(\" " + tmpInfo2 + " \")이 길이를 초과하여 입력되었습니다. 20글자 이하로 입력해 주세요.";
//break; //break;
tempAddrVO.setAddrInfo2(addrVO.getInfo2List()[i].replaceAll("§", ",").substring(0, 20)); tempAddrVO.setAddrInfo2(subStringBytes(addrVO.getInfo2List()[i].replaceAll("§", ","), 40, 2));
}else { }else {
tempAddrVO.setAddrInfo2(addrVO.getInfo2List()[i].replaceAll("§", ",")); tempAddrVO.setAddrInfo2(addrVO.getInfo2List()[i].replaceAll("§", ","));
} }
@ -1814,14 +1814,14 @@ public class AddrController {
tempAddrVO.setAddrInfo3(null); tempAddrVO.setAddrInfo3(null);
}else { }else {
String tmpInfo3 = addrVO.getInfo3List()[i].replaceAll("§", ","); String tmpInfo3 = addrVO.getInfo3List()[i].replaceAll("§", ",");
int info3Len = tmpInfo3.length(); int info3Len = tmpInfo3.getBytes(charset).length;
if(info3Len > 20) { if(info3Len >= 40) {
//isSuccess = false; //isSuccess = false;
//msg = "[*3*] 항목의 내용(\" " + tmpInfo3 + " \")이 길이를 초과하여 입력되었습니다. 20글자 이하로 입력해 주세요."; //msg = "[*3*] 항목의 내용(\" " + tmpInfo3 + " \")이 길이를 초과하여 입력되었습니다. 20글자 이하로 입력해 주세요.";
//break; //break;
tempAddrVO.setAddrInfo3(addrVO.getInfo3List()[i].replaceAll("§", ",").substring(0, 20)); tempAddrVO.setAddrInfo3(subStringBytes(addrVO.getInfo3List()[i].replaceAll("§", ","), 40, 2));
}else { }else {
tempAddrVO.setAddrInfo3(addrVO.getInfo3List()[i].replaceAll("§", ",")); tempAddrVO.setAddrInfo3(addrVO.getInfo3List()[i].replaceAll("§", ","));
} }
@ -1836,14 +1836,14 @@ public class AddrController {
tempAddrVO.setAddrInfo4(null); tempAddrVO.setAddrInfo4(null);
}else { }else {
String tmpInfo4 = addrVO.getInfo4List()[i].replaceAll("§", ","); String tmpInfo4 = addrVO.getInfo4List()[i].replaceAll("§", ",");
int info4Len = tmpInfo4.length(); int info4Len = tmpInfo4.getBytes(charset).length;
if(info4Len > 20) { if(info4Len >= 40) {
//isSuccess = false; //isSuccess = false;
//msg = "[*4*] 항목의 내용(\" " + tmpInfo4 + " \")이 길이를 초과하여 입력되었습니다. 20글자 이하로 입력해 주세요."; //msg = "[*4*] 항목의 내용(\" " + tmpInfo4 + " \")이 길이를 초과하여 입력되었습니다. 20글자 이하로 입력해 주세요.";
//break; //break;
tempAddrVO.setAddrInfo4(addrVO.getInfo4List()[i].replaceAll("§", ",").substring(0, 20)); tempAddrVO.setAddrInfo4(subStringBytes(addrVO.getInfo4List()[i].replaceAll("§", ","), 40, 2));
}else { }else {
tempAddrVO.setAddrInfo4(addrVO.getInfo4List()[i].replaceAll("§", ",")); tempAddrVO.setAddrInfo4(addrVO.getInfo4List()[i].replaceAll("§", ","));
} }
@ -1858,14 +1858,14 @@ public class AddrController {
tempAddrVO.setAddrComment(null); tempAddrVO.setAddrComment(null);
}else { }else {
String tmpComment = addrVO.getMemoList()[i].replaceAll("§", ","); String tmpComment = addrVO.getMemoList()[i].replaceAll("§", ",");
int commLen = tmpComment.length(); int commLen = tmpComment.getBytes(charset).length;
if(commLen > 125) { if(commLen >= 200) {
//isSuccess = false; //isSuccess = false;
//msg = "메모 항목의 내용(\" " + tmpComment + " \")이 길이를 초과하여 입력되었습니다. 100글자 이하로 입력해 주세요."; //msg = "메모 항목의 내용(\" " + tmpComment + " \")이 길이를 초과하여 입력되었습니다. 100글자 이하로 입력해 주세요.";
//break; //break;
tempAddrVO.setAddrComment(addrVO.getMemoList()[i].replaceAll("§", ",").substring(0, 125)); tempAddrVO.setAddrComment(subStringBytes(addrVO.getMemoList()[i].replaceAll("§", ","), 200, 2));
}else { }else {
tempAddrVO.setAddrComment(addrVO.getMemoList()[i].replaceAll("§", ",")); tempAddrVO.setAddrComment(addrVO.getMemoList()[i].replaceAll("§", ","));
} }
@ -1952,6 +1952,41 @@ public class AddrController {
return modelAndView; return modelAndView;
} }
/* 바이트 자르기
UTF-8일 경우
subStringBytes("블라블라블라라", 10, 3);
EUC-KR일 경우
subStringBytes("블라블라블라라", 10, 2);
*/
public String subStringBytes(String str, int byteLength, int sizePerLetter) {
int retLength = 0;
int tempSize = 0;
int asc;
if (str == null || "".equals(str) || "null".equals(str)) {
str = "";
}
int length = str.length();
for (int i = 1; i <= length; i++) {
asc = (int) str.charAt(i - 1);
if (asc > 127) {
if (byteLength >= tempSize + sizePerLetter) {
tempSize += sizePerLetter;
retLength++;
}
} else {
if (byteLength > tempSize) {
tempSize++;
retLength++;
}
}
}
return str.substring(0, retLength);
}
/** /**
* 주소록 그룹 목록 * 주소록 그룹 목록