여분의 공백이있는 문자열이 있습니다. 각 공백이 하나 이상있을 때마다 하나만 있으면됩니다.
누군가? Google 검색을 시도했지만 아무것도 효과가 없었습니다.
감사
답변
답변
다음과 같이 문자열을 기능 보강하여 메소드로 이러한 동작을 구현할 수 있습니다.
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 ()이 잘 작동합니다.
답변
나는 주제에 대해 괴사를해서는 안된다는 것을 알고 있지만 질문의 세부 사항을 감안할 때 나는 보통 그것을 의미로 확장합니다.
- 문자열 내부의 여러 공백 발생을 단일 공백으로 바꾸고 싶습니다.
- … 그리고 문자열의 시작 부분이나 끝 부분에 공백을 원하지 않습니다 (자르기)
이를 위해 다음과 같은 코드를 사용합니다 (첫 번째 정규 표현식의 괄호는 코드를 좀 더 읽기 쉽게하기 위해 있습니다 … 정규 표현식은 익숙하지 않으면 고통 스럽습니다).
s = s.replace(/^(\s*)|(\s*)$/g, '').replace(/\s+/g, ' ');
이것이 작동하는 이유는 String-object의 메소드가 다른 메소드를 호출 할 수있는 문자열 객체를 반환하기 때문입니다 (jQuery 및 다른 라이브러리와 마찬가지로). 단일 객체에서 여러 메소드를 연속적으로 실행하려는 경우 훨씬 간단한 코딩 방법입니다.