어느 윗분께서 String의 trim()을 사용하면, 한번더 호출해야 정확하게 trim()이 된다고 말씀을 하셔서.. String 클래스의 trim()메쏘드를 살펴보니 아래와 같이 코딩이 되어 있네요..
위 코드를 살펴보면, char[]의 ' ' <-- 공백을 앞쪽에서는 st를 뒤로 밀고, 뒤쪽에서는 len을 앞쪽으로 땅기면서 substring을 하게 되어 있네요..
위 코드를 보면 분명히 한번만 trim()하면 공백이 날라가네요.. ^^
public String trim() {
int len = count;
int st = 0;
int off = offset; /* avoid getfield opcode */
char[] val = value; /* avoid getfield opcode */
while ((st < len) && (val[off + st] <= ' ')) {
st++;
}
while ((st < len) && (val[off + len - 1] <= ' ')) {
len--;
}
return ((st > 0) || (len < count)) ? substring(st, len) : this;
}
int len = count;
int st = 0;
int off = offset; /* avoid getfield opcode */
char[] val = value; /* avoid getfield opcode */
while ((st < len) && (val[off + st] <= ' ')) {
st++;
}
while ((st < len) && (val[off + len - 1] <= ' ')) {
len--;
}
return ((st > 0) || (len < count)) ? substring(st, len) : this;
}
위 코드를 살펴보면, char[]의 ' ' <-- 공백을 앞쪽에서는 st를 뒤로 밀고, 뒤쪽에서는 len을 앞쪽으로 땅기면서 substring을 하게 되어 있네요..
위 코드를 보면 분명히 한번만 trim()하면 공백이 날라가네요.. ^^
'java' 카테고리의 다른 글
| garbage collector (0) | 2010/04/29 |
|---|---|
| Circular Dependency Problem (0) | 2010/03/26 |
| String의 공백은 trim()을 두번 호출해야 된다는 얘기에 대해서.. (0) | 2010/03/04 |
| 소켓 연결 확인하기.. (0) | 2010/03/03 |
| Object.hashCode() vs System.identityHashCode(Object x) (0) | 2010/02/01 |