자바 스크립트는 trim() 함수를 지원하지 않는다.
그래서 정규식을 활용해서 구현해서 사용하는 것이 일반적이다.
주어진 문자열의 앞뒤를 동시에 트림하는 함수를 구현한 가장 일반적인 함수는 아래의 형태이다.
function trimboth1(str) {
return str.replace(/^\s+|\s+$/g,'');
}
그런데, 인터넷을 뒤지다가 Faster Javascript Trim이라는 글을 찾았다.
글의 요지는 간단하다. 정규식을 이용하는 것이 가장 빠른 것이 아니라는 것.
코드의 길이가 좀 길어지더라도 더 빠른 함수가 필요하다면 아래와 같은 형태가 좋은 것 같다.
function trimboth2(str) {
var space = '\s';
var left=str.length, right=-1, i;
for (i=0; i<str.length; i++) {
if (space.indexOf(str.charAt(i)) == -1) {
left = i;
break;
}
}
for (i=str.length-1; i>=left; i--) {
if (space.indexOf(str.charAt(i)) == -1) {
right = i;
break;
}
}
if (left>right) return '';
else return str.substring(left, right+1);
}
자주 쓴다면 확실히 아래의 것이 더 좋겠네요.
답글삭제@koc/SALM - 2010/07/14 18:42
답글삭제네. 좀 길어져도 말이죠.
이건 뭐 [b]?:[/b] 삼항 연산자 삽질이 사실은 if보다 느리다는 내용을 생각나게 하네요...
답글삭제@Un-i-que - 2010/07/14 22:18
답글삭제정말인가요? 헐~
@BLUEnLIVE - 2010/07/15 00:22
답글삭제모르고 계셨나요 ? 설마 : 그럼 그렇지 [emo=003]
@Un-i-que - 2010/07/14 22:18
답글삭제C/C++ 환경에선 그렇지 않아 별 생각 없이 많이 썼는데, js에선 느릴 수 있겠군요. 고맙습니다.