source

JavaScript 문자열에서 여러 공백을 단일 공백으로 바꿉니다.

factcode 2022. 9. 28. 00:05
반응형

JavaScript 문자열에서 여러 공백을 단일 공백으로 바꿉니다.

여백이 추가된 문자열이 있습니다.공백이 한 개 이상일 때마다 한 개만 있었으면 좋겠어요.JavaScript를 사용하여 이 작업을 수행하려면 어떻게 해야 합니까?

다음과 같은 경우:

var s = "  a  b     c  ";

console.log(
  s.replace(/\s+/g, ' ')
)

다음과 같이 String을 증강하여 이러한 동작을 메서드로 구현할 수 있습니다.

String.prototype.killWhiteSpace = function() {
    return this.replace(/\s/g, '');
};

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

이를 통해 다음과 같은 우아한 형식을 사용하여 원하는 문자열을 생성할 수 있습니다.

"Get rid of my whitespaces.".killWhiteSpace();
"Get rid of my extra        whitespaces".reduceWhiteSpace();

다음은 정규식이 아닌 솔루션(단순한 재미)입니다.

var s = ' a   b   word word. word, wordword word   ';

// with ES5:
s = s.split(' ').filter(function(n){ return n != '' }).join(' ');
console.log(s); // "a b word word. word, wordword word"

// or ES2015:
s = s.split(' ').filter(n => n).join(' '); 
console.log(s); // "a b word word. word, wordword word"

filter(n => n).filter(String)

문자열을 공백으로 분할하고 배열에서 빈 배열 항목(공백보다 많았던 항목)을 모두 제거한 후 모든 단어를 공백 하나를 사용하여 문자열로 다시 결합합니다.

replace 함수와 함께 정규 표현을 사용하면 다음과 같은 트릭이 발생합니다.

string.replace(/\s/g, "")

(모든 공백을 제거하는 것이 아니라) 문자열의 시작 및/또는 끝의 공백을 제거하는 이 좋습니다.

이 경우 다음과 같은 정규식이 필요합니다.

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

이렇게 하면 문자열의 시작 또는 끝에서 모든 공백이 제거됩니다.끝에서 공백만 트리밍하는 경우 regex는 대신 다음과 같습니다.

mystring = mystring.replace(/\s+$/g,' ');

도움이 됐으면 좋겠다.

jQuery.trim()은 정상적으로 동작합니다.

http://api.jquery.com/jQuery.trim/

어떤 주제에 대해 신랄하게 다루어서는 안 된다는 것을 알지만, 질문의 세부 사항을 고려할 때, 저는 보통 다음과 같은 의미로 확장합니다.

  • 문자열 내의 공백이 여러 개 발생하는 것을 하나의 공백으로 바꾸고 싶다.
  • ...그리고...문자열의 시작 부분 또는 끝 부분(트림)에 공백 공간을 넣지 마십시오.

이 경우 다음과 같은 코드를 사용합니다(첫 번째 regexp의 괄호는 코드를 좀 더 읽기 쉽게 하기 위해 있습니다).regexps에 익숙하지 않은 경우 문제가 될 수 있습니다).

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

이것이 동작하는 이유는 String-object의 메서드가 다른 메서드를 호출할 수 있는 문자열 객체를 반환하기 때문입니다(jQuery 및 기타 라이브러리와 마찬가지로).단일 개체에서 여러 메서드를 연속적으로 실행하는 경우 훨씬 더 콤팩트한 코드화 방법입니다.

var x = "Test Test ".test ".test ".test"); alert(x;

이거 먹어봐.

var string = "         string             1";
string = string.trim().replace(/\s+/g, ' ');

결과는 다음과 같습니다

string 1

요, 예요.trim()그런 다음 내부 공간을 잘라냅니다..replace(/\s+/g, ' ').

이것은 어떠세요?

"my test string \t\t with crazy stuff is cool ".replace(/\s{2,9999}|\t/g, ' ')

출력"my test string with crazy stuff is cool "

이것은 탭도 없앤다.

이름에 공백이 생기도록 사용자를 제한하려면 if 문을 만들고 조건을 지정하십시오.내가 한 것처럼:

$j('#fragment_key').bind({
    keypress: function(e){
        var key = e.keyCode;
    var character = String.fromCharCode(key); 
    if(character.match( /[' ']/)) {
        alert("Blank space is not allowed in the Name");
        return false;
        }
    }
});
  • JQuery 함수를 만듭니다.
  • 이것은 주요 언론 행사입니다.
  • 변수를 초기화합니다.
  • 캐릭터에 맞는 조건 부여
  • 일치하는 조건에 대한 경보메시지를 표시합니다.

언급URL : https://stackoverflow.com/questions/6163169/replace-multiple-whitespaces-with-single-whitespace-in-javascript-string

반응형