[javascript] 문자열의 시작과 끝에서 공백 자르기

제목 문자열의 시작과 끝에서 공백을 자르는 방법을 찾으려고합니다. 나는 이것을 사용하고 있었지만 작동하지 않는 것 같습니다.

title = title.replace(/(^[\s]+|[\s]+$)/g, '');

어떤 아이디어?



답변

참고 : 2015 년 현재 모든 주요 브라우저 (IE> = 9 포함)는 String.prototype.trim ()을 지원 합니다. 이것은 대부분의 유스 케이스에서 단순히 수행하는 str.trim()것이 질문에서 요구하는 것을 달성하는 가장 좋은 방법임을 의미합니다.


Steven Levithan trim은 성능 측면에서 Javascript 의 다양한 구현을 분석했습니다 .

그의 추천은 :

function trim1 (str) {
    return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}

“빠른 크로스 브라우저 인 범용 구현”및

function trim11 (str) {
    str = str.replace(/^\s+/, '');
    for (var i = str.length - 1; i >= 0; i--) {
        if (/\S/.test(str.charAt(i))) {
            str = str.substring(0, i + 1);
            break;
        }
    }
    return str;
}

“모든 브라우저에서 긴 문자열을 예외적으로 빠르게 처리하려면”

참고 문헌


답변

jQuery를 사용하는 것이 옵션 인 경우 :

/**
 * Trim the site input[type=text] fields globally by removing any whitespace from the
 * beginning and end of a string on input .blur()
 */
$('input[type=text]').blur(function(){
    $(this).val($.trim($(this).val()));
});

또는 간단히 :

$.trim(string);


답변

으로 @ChaosPandion는 언급의 String.prototype.trim방법은 도입 된 ECMAScript를 5 판 , 사양 일부 구현이 가장 좋은 방법은 기본 구현을 감지하고 그것을 선언하는 것입니다, 그래서 이미이 방법을 포함 이 사용할 수없는 경우 :

if (typeof String.prototype.trim != 'function') { // detect native implementation
  String.prototype.trim = function () {
    return this.replace(/^\s+/, '').replace(/\s+$/, '');
  };
}

그런 다음 간단하게 할 수 있습니다.

title = title.trim();


답변

나는 이것이 오래된 게시물이라는 것을 알고 있지만 솔루션을 공유 할 것이라고 생각했습니다. (모두가 단지 않는 짧은 코드에 대한 탐구에서 사랑 간결한 정규식), 하나 대신 사용할 수 있습니다 :

title = title.replace(/(^\s+|\s+$)/g, '');

BTW : blog.stevenlevithan.com 위에 공유 된 링크를 통해 동일한 테스트를 실행했습니다. 빠른 JavaScript 트림 과이 패턴은 다른 모든 핸드를 이겼습니다!

IE8을 사용하여 test13으로 테스트를 추가했습니다. 결과는 다음과 같습니다.

원래 길이 : 226002 트림 1
: 110ms (길이 : 225994)
트림 2 : 79ms (길이 : 225994)
트림 3 : 172ms (길이 : 225994)
트림 4 : 203ms (길이 : 225994)
트림 5 : 172ms (길이 : 225994)
트림 6 : 312ms (길이 : 트림
7 : 203ms (길이 : 225994)
트림 8 : 47ms (길이 : 225994)
트림 9 : 453ms (길이 : 225994)
트림 10 : 15ms (길이 : 225994)
트림 11 : 16ms (길이 : 225994)
트림 12 : 31ms (길이 : 225994)
trim13 : 0ms (길이 : 226002)


답변

ECMAScript 5는 trim이를 지원 하며 Firefox에서 구현되었습니다.

트림-MDC


답변

여기, 이것은 당신이 필요한 모든 것을해야합니다

function doSomething(input) {
    return input
              .replace(/^\s\s*/, '')     // Remove Preceding white space
              .replace(/\s\s*$/, '')     // Remove Trailing white space
              .replace(/([\s]+)/g, '-'); // Replace remaining white space with dashes
}

alert(doSomething("  something with  some       whitespace   "));


답변

다음은 js에서 문자열을 자르기 위해 과거에 사용한 몇 가지 방법입니다.

String.prototype.ltrim = function( chars ) {
    chars = chars || "\\s*";
    return this.replace( new RegExp("^[" + chars + "]+", "g"), "" );
}

String.prototype.rtrim = function( chars ) {
    chars = chars || "\\s*";
    return this.replace( new RegExp("[" + chars + "]+$", "g"), "" );
}
String.prototype.trim = function( chars ) {
    return this.rtrim(chars).ltrim(chars);
}