주소록 대량등록 치환문자 바이트수 계산로직 수정
@b51956b8d93e799d5af4de89c4035eb3e082fdbd
--- src/main/java/itn/let/mjo/addr/web/AddrController.java
+++ src/main/java/itn/let/mjo/addr/web/AddrController.java
... | ... | @@ -1663,6 +1663,7 @@ |
| 1663 | 1663 |
//String phoneRegExp = "^01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4})[.-]?(\\d{4})$";
|
| 1664 | 1664 |
String phoneRegExp = "^(050[234567]{1}|01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$";
|
| 1665 | 1665 |
|
| 1666 |
+ String charset = "euc-kr"; |
|
| 1666 | 1667 |
boolean isSuccess = true; |
| 1667 | 1668 |
String msg = ""; |
| 1668 | 1669 |
int resultCnt = 0; |
... | ... | @@ -1734,14 +1735,14 @@ |
| 1734 | 1735 |
tempAddrVO.setAddrNm(null); |
| 1735 | 1736 |
}else {
|
| 1736 | 1737 |
String tmpNm = addrVO.getNameList()[i].trim().replaceAll("§", ",");
|
| 1737 |
- int nmLen = tmpNm.length(); |
|
| 1738 |
+ int nmLen = tmpNm.getBytes(charset).length; |
|
| 1738 | 1739 |
|
| 1739 |
- if(nmLen > 12) {
|
|
| 1740 |
+ if(nmLen >= 20) {
|
|
| 1740 | 1741 |
//isSuccess = false; |
| 1741 | 1742 |
//msg = "이름 항목의 내용(\" " + tmpNm + " \")이 길이를 초과하여 입력되었습니다. 12글자 이하로 입력해 주세요."; |
| 1742 | 1743 |
//break; |
| 1743 | 1744 |
|
| 1744 |
- tempAddrVO.setAddrNm(addrVO.getNameList()[i].trim().replaceAll("§", ",").substring(0, 12));
|
|
| 1745 |
+ tempAddrVO.setAddrNm(subStringBytes(addrVO.getNameList()[i].replaceAll("§", ","), 20, 2));
|
|
| 1745 | 1746 |
}else {
|
| 1746 | 1747 |
tempAddrVO.setAddrNm(addrVO.getNameList()[i].trim().replaceAll("§", ","));
|
| 1747 | 1748 |
} |
... | ... | @@ -1769,14 +1770,13 @@ |
| 1769 | 1770 |
}else {
|
| 1770 | 1771 |
|
| 1771 | 1772 |
String tmpInfo1 = addrVO.getInfo1List()[i].replaceAll("§", ",");
|
| 1772 |
- int info1Len = tmpInfo1.length(); |
|
| 1773 |
+ int info1Len = tmpInfo1.getBytes(charset).length; |
|
| 1773 | 1774 |
|
| 1774 |
- if(info1Len > 20) {
|
|
| 1775 |
+ if(info1Len >= 40) {
|
|
| 1775 | 1776 |
//isSuccess = false; |
| 1776 | 1777 |
//msg = "[*1*] 항목의 내용(\" " + tmpInfo1 + " \")이 길이를 초과하여 입력되었습니다. 20글자 이하로 입력해 주세요."; |
| 1777 | 1778 |
//break; |
| 1778 |
- |
|
| 1779 |
- tempAddrVO.setAddrInfo1(addrVO.getInfo1List()[i].replaceAll("§", ",").substring(0, 20));
|
|
| 1779 |
+ tempAddrVO.setAddrInfo1(subStringBytes(addrVO.getInfo1List()[i].replaceAll("§", ","), 40, 2));
|
|
| 1780 | 1780 |
}else {
|
| 1781 | 1781 |
tempAddrVO.setAddrInfo1(addrVO.getInfo1List()[i].replaceAll("§", ","));
|
| 1782 | 1782 |
} |
... | ... | @@ -1791,14 +1791,14 @@ |
| 1791 | 1791 |
tempAddrVO.setAddrInfo2(null); |
| 1792 | 1792 |
}else {
|
| 1793 | 1793 |
String tmpInfo2 = addrVO.getInfo2List()[i].replaceAll("§", ",");
|
| 1794 |
- int info2Len = tmpInfo2.length(); |
|
| 1794 |
+ int info2Len = tmpInfo2.getBytes(charset).length; |
|
| 1795 | 1795 |
|
| 1796 |
- if(info2Len > 20) {
|
|
| 1796 |
+ if(info2Len >= 40) {
|
|
| 1797 | 1797 |
//isSuccess = false; |
| 1798 | 1798 |
//msg = "[*2*] 항목의 내용(\" " + tmpInfo2 + " \")이 길이를 초과하여 입력되었습니다. 20글자 이하로 입력해 주세요."; |
| 1799 | 1799 |
//break; |
| 1800 | 1800 |
|
| 1801 |
- tempAddrVO.setAddrInfo2(addrVO.getInfo2List()[i].replaceAll("§", ",").substring(0, 20));
|
|
| 1801 |
+ tempAddrVO.setAddrInfo2(subStringBytes(addrVO.getInfo2List()[i].replaceAll("§", ","), 40, 2));
|
|
| 1802 | 1802 |
}else {
|
| 1803 | 1803 |
tempAddrVO.setAddrInfo2(addrVO.getInfo2List()[i].replaceAll("§", ","));
|
| 1804 | 1804 |
} |
... | ... | @@ -1814,14 +1814,14 @@ |
| 1814 | 1814 |
tempAddrVO.setAddrInfo3(null); |
| 1815 | 1815 |
}else {
|
| 1816 | 1816 |
String tmpInfo3 = addrVO.getInfo3List()[i].replaceAll("§", ",");
|
| 1817 |
- int info3Len = tmpInfo3.length(); |
|
| 1817 |
+ int info3Len = tmpInfo3.getBytes(charset).length; |
|
| 1818 | 1818 |
|
| 1819 |
- if(info3Len > 20) {
|
|
| 1819 |
+ if(info3Len >= 40) {
|
|
| 1820 | 1820 |
//isSuccess = false; |
| 1821 | 1821 |
//msg = "[*3*] 항목의 내용(\" " + tmpInfo3 + " \")이 길이를 초과하여 입력되었습니다. 20글자 이하로 입력해 주세요."; |
| 1822 | 1822 |
//break; |
| 1823 | 1823 |
|
| 1824 |
- tempAddrVO.setAddrInfo3(addrVO.getInfo3List()[i].replaceAll("§", ",").substring(0, 20));
|
|
| 1824 |
+ tempAddrVO.setAddrInfo3(subStringBytes(addrVO.getInfo3List()[i].replaceAll("§", ","), 40, 2));
|
|
| 1825 | 1825 |
}else {
|
| 1826 | 1826 |
tempAddrVO.setAddrInfo3(addrVO.getInfo3List()[i].replaceAll("§", ","));
|
| 1827 | 1827 |
} |
... | ... | @@ -1836,14 +1836,14 @@ |
| 1836 | 1836 |
tempAddrVO.setAddrInfo4(null); |
| 1837 | 1837 |
}else {
|
| 1838 | 1838 |
String tmpInfo4 = addrVO.getInfo4List()[i].replaceAll("§", ",");
|
| 1839 |
- int info4Len = tmpInfo4.length(); |
|
| 1839 |
+ int info4Len = tmpInfo4.getBytes(charset).length; |
|
| 1840 | 1840 |
|
| 1841 |
- if(info4Len > 20) {
|
|
| 1841 |
+ if(info4Len >= 40) {
|
|
| 1842 | 1842 |
//isSuccess = false; |
| 1843 | 1843 |
//msg = "[*4*] 항목의 내용(\" " + tmpInfo4 + " \")이 길이를 초과하여 입력되었습니다. 20글자 이하로 입력해 주세요."; |
| 1844 | 1844 |
//break; |
| 1845 | 1845 |
|
| 1846 |
- tempAddrVO.setAddrInfo4(addrVO.getInfo4List()[i].replaceAll("§", ",").substring(0, 20));
|
|
| 1846 |
+ tempAddrVO.setAddrInfo4(subStringBytes(addrVO.getInfo4List()[i].replaceAll("§", ","), 40, 2));
|
|
| 1847 | 1847 |
}else {
|
| 1848 | 1848 |
tempAddrVO.setAddrInfo4(addrVO.getInfo4List()[i].replaceAll("§", ","));
|
| 1849 | 1849 |
} |
... | ... | @@ -1858,14 +1858,14 @@ |
| 1858 | 1858 |
tempAddrVO.setAddrComment(null); |
| 1859 | 1859 |
}else {
|
| 1860 | 1860 |
String tmpComment = addrVO.getMemoList()[i].replaceAll("§", ",");
|
| 1861 |
- int commLen = tmpComment.length(); |
|
| 1861 |
+ int commLen = tmpComment.getBytes(charset).length; |
|
| 1862 | 1862 |
|
| 1863 |
- if(commLen > 125) {
|
|
| 1863 |
+ if(commLen >= 200) {
|
|
| 1864 | 1864 |
//isSuccess = false; |
| 1865 | 1865 |
//msg = "메모 항목의 내용(\" " + tmpComment + " \")이 길이를 초과하여 입력되었습니다. 100글자 이하로 입력해 주세요."; |
| 1866 | 1866 |
//break; |
| 1867 | 1867 |
|
| 1868 |
- tempAddrVO.setAddrComment(addrVO.getMemoList()[i].replaceAll("§", ",").substring(0, 125));
|
|
| 1868 |
+ tempAddrVO.setAddrComment(subStringBytes(addrVO.getMemoList()[i].replaceAll("§", ","), 200, 2));
|
|
| 1869 | 1869 |
}else {
|
| 1870 | 1870 |
tempAddrVO.setAddrComment(addrVO.getMemoList()[i].replaceAll("§", ","));
|
| 1871 | 1871 |
} |
... | ... | @@ -1952,6 +1952,41 @@ |
| 1952 | 1952 |
return modelAndView; |
| 1953 | 1953 |
} |
| 1954 | 1954 |
|
| 1955 |
+ /* 바이트 자르기 |
|
| 1956 |
+ UTF-8일 경우 |
|
| 1957 |
+ subStringBytes("블라블라블라라", 10, 3);
|
|
| 1958 |
+ EUC-KR일 경우 |
|
| 1959 |
+ subStringBytes("블라블라블라라", 10, 2);
|
|
| 1960 |
+ */ |
|
| 1961 |
+ public String subStringBytes(String str, int byteLength, int sizePerLetter) {
|
|
| 1962 |
+ int retLength = 0; |
|
| 1963 |
+ int tempSize = 0; |
|
| 1964 |
+ int asc; |
|
| 1965 |
+ if (str == null || "".equals(str) || "null".equals(str)) {
|
|
| 1966 |
+ str = ""; |
|
| 1967 |
+ } |
|
| 1968 |
+ |
|
| 1969 |
+ int length = str.length(); |
|
| 1970 |
+ |
|
| 1971 |
+ for (int i = 1; i <= length; i++) {
|
|
| 1972 |
+ asc = (int) str.charAt(i - 1); |
|
| 1973 |
+ if (asc > 127) {
|
|
| 1974 |
+ if (byteLength >= tempSize + sizePerLetter) {
|
|
| 1975 |
+ tempSize += sizePerLetter; |
|
| 1976 |
+ retLength++; |
|
| 1977 |
+ } |
|
| 1978 |
+ } else {
|
|
| 1979 |
+ if (byteLength > tempSize) {
|
|
| 1980 |
+ tempSize++; |
|
| 1981 |
+ retLength++; |
|
| 1982 |
+ } |
|
| 1983 |
+ } |
|
| 1984 |
+ } |
|
| 1985 |
+ |
|
| 1986 |
+ return str.substring(0, retLength); |
|
| 1987 |
+ } |
|
| 1988 |
+ |
|
| 1989 |
+ |
|
| 1955 | 1990 |
|
| 1956 | 1991 |
/** |
| 1957 | 1992 |
* 주소록 그룹 목록 |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?