어느 윗분께서 String의 trim()을 사용하면, 한번더 호출해야 정확하게 trim()이 된다고 말씀을 하셔서, String 클래스의 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; }
위 코드를 보면, char[]의 ‘ ‘ <– 공백을 앞쪽에서는 st를 뒤로 밀고, 뒤쪽에서는 len을 앞쪽으로 땅기면서 substring을 하네요. 위 코드를 보면 분명히 한번만 trim()하면 공백이 날라갑니다.. ^^