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()하면 공백이 날라갑니다.. ^^

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.