문제

이 질문은 이미 여기에 답이 있습니다.

문자열에서 선행 및 후행 공간을 벗기기위한 깨끗하고 효율적인 JavaScript 구현은 무엇입니까?

예를 들어:

" dog"

"dog "

" dog "

" dog "

모두로 변합니다

"dog"

도움이 되었습니까?

해결책

이것을 사용하십시오 :

if(typeof(String.prototype.trim) === "undefined")
{
    String.prototype.trim = function() 
    {
        return String(this).replace(/^\s+|\s+$/g, '');
    };
}

트림 함수는 이제 문자열에서 일류 기능으로 사용할 수 있습니다. 예를 들어:

" dog".trim() === "dog" //true

편집하다: regex 패턴을 하나로 결합하기 위해 JP의 제안을 받았습니다. 또한 Christoph의 제안에 따라 글로벌 수정자를 추가했습니다.

재현하기 전에 트림 기능에 대한 스니핑에 대한 Matthew Crumley의 아이디어를 취했습니다. 클라이언트에서 사용되는 JavaScript 버전이보다 최근에 사용되었으므로 고유 한 기본 트림 기능이있는 경우에 이루어집니다.

다른 팁

jQuery 사용자의 경우 어떨까요? $.trim(s)

Gumbo는 이미 의견으로 이것을 주목했지만 이것은 답으로 반복됩니다. trim() 방법은 JavaScript 1.8.1에 추가되었으며 모든 최신 브라우저 (Firefox 3.5+, IE 9, Chrome 10, Safari 5.x)에서 지원됩니다. IE 8 이상은 지원하지 않습니다. 사용량은 간단합니다.

 "  foo\n\t  ".trim() => "foo"

또한보십시오:

여기 내가 사용하는 기능이 있습니다.

function trim(s){ 
  return ( s || '' ).replace( /^\s+|\s+$/g, '' ); 
}

더 나은 폴리 플릴 MDN 그것은 제거를 지원합니다 BOM 그리고 NBSP:

if (!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
  };
}

내장 프로토 타입을 수정하는 것은 성능 히트 (여러 런타임 최적화에 대한 JS 엔진 베일링으로 인해)와 성능의 중요한 상황에서 정의의 대안을 고려해야 할 수도 있습니다. myTrimFunction(string) 대신에. 즉, 기본이없는 오래된 환경을 목표로하는 경우 .trim() 지원, 당신은 더 중요한 성능 문제가있을 가능성이 높습니다.

스티븐 레비 탄 한 번 구현 방법에 대해 썼습니다 더 빠른 JavaScript 트림. 확실히 볼만한 가치가 있습니다.

이미 jQuery를 사용하고 있다면, 당신은 jQuery.trim() 이미 jQuery가 제공됩니다.

문자열을 다듬기 위해 새 코드를 작성하는 대신 "Strip ()"이라는 기존 코드를보고 있는데 왜 작동하지 않는지 궁금해하는 경우 Profortypejs 프레임 워크와 같은 것을 포함 시키려고할지 여부를 확인할 수 있습니다. 그리고 실제로로드되고 있는지 확인하십시오.
이 프레임 워크는 모든 문자열 객체에 스트립 함수를 추가하지만, 예를 들어 업그레이드하고 웹 페이지가 여전히 기존 .js 파일을 참조하는 경우에도 작동하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top