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

여분의 공백이있는 문자열이 있습니다. 각 공백이 하나 이상있을 때마다 하나만 있으면됩니다.

누군가? Google 검색을 시도했지만 아무것도 효과가 없었습니다.

감사



답변

이 같은:

var s = "  a  b     c  ";

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


답변

다음과 같이 문자열을 기능 보강하여 메소드로 이러한 동작을 구현할 수 있습니다.

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


답변

replace 함수와 함께 정규 표현식을 사용하면 트릭이 수행됩니다.

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


답변

비정규 솔루션은 다음과 같습니다 (재미를 위해).

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 ES6:
s = s.split(' ').filter(n => n).join(' ');
console.log(s); // "a b word word. word, wordword word"

문자열을 공백으로 나누고 배열에서 빈 배열 항목을 모두 제거하고 (하나 이상의 공백 인 항목) 공백 사이에 하나의 공백이있는 모든 단어를 문자열로 다시 결합합니다.


답변

모든 공백을 제거하지 않고 문자열의 시작 및 / 또는 끝에서 공백을 제거하려고한다고 가정합니다 .

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

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

문자열의 시작 또는 끝에서 모든 공백이 제거됩니다. 끝에서 공백 만 자르고 싶다면 정규 표현식이 다음과 같이 보입니다.

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

희망이 도움이됩니다.


답변

jQuery.trim ()이 잘 작동합니다.

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


답변

나는 주제에 대해 괴사를해서는 안된다는 것을 알고 있지만 질문의 세부 사항을 감안할 때 나는 보통 그것을 의미로 확장합니다.

  • 문자열 내부의 여러 공백 발생을 단일 공백으로 바꾸고 싶습니다.
  • … 그리고 문자열의 시작 부분이나 끝 부분에 공백을 원하지 않습니다 (자르기)

이를 위해 다음과 같은 코드를 사용합니다 (첫 번째 정규 표현식의 괄호는 코드를 좀 더 읽기 쉽게하기 위해 있습니다 … 정규 표현식은 익숙하지 않으면 고통 스럽습니다).

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

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