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
'source' 카테고리의 다른 글
int를 부호 없는 바이트로 변환하고 되돌리는 방법 (0) | 2022.09.28 |
---|---|
기본 키가 자동으로 증가하는 MySQL에 데이터를 삽입하려면 어떻게 해야 합니까? (0) | 2022.09.28 |
iOS 6의 Safari는 $.ajax 결과를 캐싱하고 있습니까? (0) | 2022.09.28 |
Vue Dev Tools에서 데이터가 업데이트되지 않는 이유는 무엇입니까? (0) | 2022.09.28 |
Python에서 따옴표로 묶인 하위 문자열을 보존하는 공백으로 문자열 분할 (0) | 2022.09.28 |