날짜별 글 목록: 2010년 3월 4일

String의 공백은 trim()을 두번 호출해야 된다는 얘기에 대해서..

어느 윗분께서 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()하면 공백이 날라갑니다.. ^^