문자열 같은 감안할 때 :
"개는 긴 꼬리를 가지고 있으며 RED입니다!"
공간을 최대 한 공간으로 유지하기 위해 어떤 종류의 jQuery 또는 JavaScript 마법을 사용할 수 있습니까?
골:
"개는 긴 꼬리를 가지고 있으며 RED입니다!"
답변
탭, 줄 바꿈 등을 다루고 싶다면 다음 \s\s+
과 ' '
같이 바꾸십시오 .
string = string.replace(/\s\s+/g, ' ');
공백 (따라서 탭, 줄 바꿈 등) 만 포함하지 않으려면 다음을 수행하십시오.
string = string.replace(/ +/g, ' ');
답변
성능에 관심이있는 것 같으므로 firebug로 프로파일 링했습니다. 내가 얻은 결과는 다음과 같습니다.
str.replace( / +/g, ' ' ) -> 380ms
str.replace( /\s\s+/g, ' ' ) -> 390ms
str.replace( / {2,}/g, ' ' ) -> 470ms
str.replace( / +/g, ' ' ) -> 790ms
str.replace( / +(?= )/g, ' ') -> 3250ms
이것은 Firefox에서 100k 문자열 대체를 실행합니다.
성능이 문제라고 생각되면 Firebug를 사용하여 자체 프로파일 링 테스트를 수행하는 것이 좋습니다. 인간은 프로그램의 병목 현상이 어디에 있는지 예측하는 데 악명이 높습니다.
또한 IE 8의 개발자 도구 모음에는 프로파일 러가 내장되어 있습니다. IE의 성능이 어떤지 확인하는 것이 좋습니다.
답변
var str = "The dog has a long tail, and it is RED!";
str = str.replace(/ {2,}/g,' ');
편집 :
모든 종류의 공백 문자를 바꾸려면 가장 효율적인 방법은 다음과 같습니다.
str = str.replace(/\s{2,}/g,' ');
답변
이것은 하나의 해결책이지만 모든 공백 문자를 대상으로 합니다 .
"The dog has a long tail, and it is RED!".replace(/\s\s+/g, ' ')
"The dog has a long tail, and it is RED!"
편집 : 이것은 공백을 대상으로하고 하나 이상의 공백을 대상으로하기 때문에 더 좋습니다.
"The dog has a long tail, and it is RED!".replace(/ +/g, ' ')
"The dog has a long tail, and it is RED!"
다른 방법 :
"The dog has a long tail, and it is RED!".replace(/ {2,}/g, ' ')
"The dog has a long tail, and it is RED!"
/\s+/
1 문자를 여러 번 확장하는 공백을 대체하고 필요 이상으로 대상을 지정하므로 효율성이 떨어질 수 있으므로 자체적으로 사용하지 않았습니다 .
나는 버그가 있다면 lmk를 깊이 테스트하지 않았습니다.
또한 문자열 교체를 수행하려면 변수 / 속성을 자체 대체물에 다시 할당해야합니다.
var string = 'foo'
string = string.replace('foo', '')
jQuery.prototype.text 사용 :
var el = $('span:eq(0)');
el.text( el.text().replace(/\d+/, '') )
답변
나는이 방법을 가지고 있으며 더 나은 이름이 없기 때문에 Derp 방법이라고 부릅니다.
while (str.indexOf(" ") !== -1) {
str = str.replace(/ /g, " ");
}
답변
보다 강력한 방법이 돌봐 또한 존재하는 경우, 초기 및 후행 공백을 제거. 예 :
// NOTE the possible initial and trailing spaces
var str = " The dog has a long tail, and it is RED! "
str = str.replace(/^\s+|\s+$|\s+(?=\s)/g, "");
// str -> "The dog has a long tail, and it is RED !"
귀하의 예에는 이러한 공간이 없지만 매우 일반적인 시나리오이며 허용되는 답변은 다음과 같이 단일 공간으로 자르는 것입니다. “The … RED!”. 일반적으로 필요한 것은 아닙니다.
답변
보다 견고 함 :
기능 트림 (단어) { 단어 = word.replace (/ [^ \ x21- \ x7E] + / g, ''); // 비 인쇄 문자를 공백으로 변경 return word.replace (/ ^ \ s + | \ s + $ / g, ''); // 선행 / 후행 공백 제거 }