일반적인 int 형 이나 long 형에 대한 금액 치환은 소스가 너무나 많다.
InsertComma(s_str) 을 해보시면 이제 원하는 금액 치환을 얻을수 있을것이다.
but 소수점으로 된 숫자, - 가 있는 숫자, 혹은 범위가 넘어서는 큰수에 대한 치환이 없어서 -_- 만들어버렸다.;;
먼저 치환할 숫자를 보면
String s_str= "-9999999999999999999.999999999999999999";
숫자야 더 커도 상관없다. String형이기 때문에 몇십만줄을 써도 치환이 가능하다.
또한 소수점까지 있는것을 볼수 있다.(이것이 가장 큰 이유인데 int 형과 long 형은 소수점 표현이 않된다.
소수점 표기가 되는 형태는 float 와 double 형 이지만 실수형으로 표기되기 때문에 금액하고는 맞지가 않다.)
이제 치환되는 함수
String InsertComma(String Source){
String sReturn = "";
String sTemp = Source;
boolean point = false;
int i = 0;
int j = 0;
if(sTemp.indexOf(".") != -1){
i = sTemp.indexOf(".")-1;
point = true;
}else{
i = (sTemp.length()-1);
}
for( ; i>=0; i--){
if((j%3 == 0) && (j!=0)){
sReturn = sTemp.substring(i, i+1) + "," + sReturn;
}
else{
sReturn = sTemp.substring(i, i+1) + sReturn;
}
j++;
}
/*==================================================
'-,123,456' 과 같은 경우 마이너스 다음의 쉼표를 제거한다.
===================================================*/
sReturn = replace(sReturn, "-,", "-");
if(point == true){
sReturn+= sTemp.substring(sTemp.indexOf("."), sTemp.length());
}
return sReturn;
}
public static String replace(String strTarget, String strSearch, String strReplace) {
String strCheck = new String(strTarget);
StringBuffer strBuf = new StringBuffer();
while(strCheck.length() != 0) {
int begin = strCheck.indexOf(strSearch);
if(begin == -1) {
strBuf.append(strCheck);
break;
}
else {
int end = begin + strSearch.length();
strBuf.append(strCheck.substring(0, begin));
strBuf.append(strReplace);
strCheck = strCheck.substring(end);
}
}
return new String(strBuf);
}
InsertComma(s_str) 을 해보시면 이제 원하는 금액 치환을 얻을수 있을것이다.
'web > JSP' 카테고리의 다른 글
JSP stack (2) | 2011.05.04 |
---|---|
Date.getYear()를 쓰지 말자. (0) | 2011.04.14 |
jsp procedure CURSOR (0) | 2011.02.19 |
서버 시간 알아내기 (0) | 2011.02.15 |
jsp java.lang.UnsupportedClassVersionError 자바빈 500 에러 (0) | 2011.01.25 |