Programing

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

lottogame 2020. 6. 9. 07:39
반응형

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


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

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);
}

Here is my current code, the 2nd line works if I comment the 3rd line, but don't work if I leave it how it is.

var page_title = $(this).val().replace(/[^a-zA-Z0-9\s]/g, '');
page_title = page_title.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
page_title = page_title.replace(/([\s]+)/g, '-');

Just use string.trim() method. It's supported by all major browsers. Reference here: http://www.w3schools.com/jsref/jsref_trim_string.asp


jQuery.trim(" hello, how are you? ");

:)


When the DOM is fully loaded, you can add this to all the text fields. I have never had a situation where I needed to submit leading or trailing space, so doing it all the time globally has worked for me...

$(function() { $('input[type=text]').on('blur', function(){
    $(this).val($.trim($(this).val()));
  });
});

This is what is suggested by JavaScript Architect/Guru Douglas Crockford.

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

Note: you have to define "method" for Function.prototype.

Alternatively

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

title.trim();    // returns trimmed title

Observation

In recent browsers, the trim method is included by default. So you don't have to add it explicitly.

Major browsers Chrome, Firefox, Safari etc. supports trim method. Checked in Chrome 55.0.2883.95 (64-bit), Firefox 51.0.1 (64-bit), Safari 10.0 (12602.1.50.0.10).


var word = " testWord ";   //add here word or space and test

var x = $.trim(word);

if(x.length > 0)
    alert('word');
else
    alert('spaces');

a recursive try for this

function t(k){ 
    if (k[0]==' ') {
        return t(k.substr(1,k.length));
    } else if (k[k.length-1]==' ') {
        return t(k.substr(0,k.length-1));
    } else {
        return k;
    }
}

call like this:

t("      mehmet       "); //=>"mehmet"

if you want to filter spesific chars you can define a list string basically:

function t(k){
    var l="\r\n\t "; //you can add more chars here.
    if (l.indexOf(k[0])>-1) {
        return t(k.substr(1,k.length));
    } else if (l.indexOf(k[k.length-1])>-1) {
        return t(k.substr(0,k.length-1));
    } else {
        return k;
    }
}

참고URL : https://stackoverflow.com/questions/3000649/trim-spaces-from-start-and-end-of-string

반응형