[javascript] JavaScript를 사용하여 문자열에서 공백을 제거하는 방법은 무엇입니까?

문자열에서 공백을 제거하는 방법? 예를 들어 :

입력:

'/var/www/site/Brand new document.docx'

산출:

'/var/www/site/Brandnewdocument.docx'



답변

이?

str = str.replace(/\s/g, '');

var str = '/var/www/site/Brand new document.docx';

document.write( str.replace(/\s/g, '') );


업데이트 : 바탕으로 이 질문 이 :

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

더 나은 솔루션입니다. 결과는 같지만 더 빠릅니다.

정규식

\s“공백”에 대한 정규식이며 ” g글로벌”플래그이며 모두 일치 \s(공백)를 의미 합니다.

에 대한 좋은 설명은 +찾을 수 있습니다 여기에 .

참고로 작은 따옴표 사이의 내용을 원하는 것으로 바꿀 수 있으므로 공백을 다른 문자열로 바꿀 수 있습니다.


답변

var a = b = " /var/www/site/Brand new   document.docx ";

console.log( a.split(' ').join('') );
console.log( b.replace( /\s/g, '') ); 

이 작업을 수행하는 두 가지 방법!


답변

가장 빠르고 가장 빠른 :str.replace(/ /g, '');


기준:

내 결과-(2018.07.13) Chrome 67.0.3396 (64-bit), Safari 11.0.3 (13604.5.6), Firefox 59.0.2 (64-bit)의 MacOs High Sierra 10.13.3 :

단축 문자열

OP 질문의 예와 유사한 짧은 문자열

여기에 이미지 설명을 입력하십시오

모든 브라우저에서 가장 빠른 솔루션은 / /g(regexp1a)-Chrome 17.7M (작동 / 초), Safari 10.1M, Firefox 8.8M입니다. 모든 브라우저에서 가장 느린 것은 split-join솔루션 이었습니다 . 변경 \s추가하거나 +또는 i처리 아래로 정규 표현식을 느려집니다.

긴 문자열

~ 3 개의 밀리언 문자 결과에 대한 문자열의 경우 :

  • regexp1a : Safari 50.14 ops / sec, Firefox 18.57, Chrome 8.95
  • regexp2b : Safari 38.39, Firefox 19.45, Chrome 9.26
  • split-join : Firefox 26.41, Safari 23.10, Chrome 7.98,

https://jsperf.com/remove-string-spaces/1 컴퓨터에서 실행할 수 있습니다


답변

@rsplak 답변에 따르면 실제로는 split / join 방식을 사용하는 것이 regexp를 사용하는 것보다 빠릅니다. 성능 테스트 사례보기

그래서

var result = text.split(' ').join('')

보다 빠르게 작동

var result = text.replace(/\s+/g, '')

작은 텍스트의 경우 이는 관련이 없지만 텍스트 분석기에서, 특히 사용자와 상호 작용할 때와 같이 시간이 중요한 경우에 중요합니다.


반면에 \s+더 넓은 공간 문자를 처리합니다. with \n와 중에서도 문자와 \t일치하므로를 사용하여 텍스트를 가져올 때 켜 집니다.\u00a0 textDomNode.nodeValue

따라서 여기에서 결론은 다음과 같이 이루어질 수 있다고 생각합니다. 공백 만 교체 해야하는 ' '경우 split / join을 사용하십시오. 심볼 클래스 의 다른 심볼이있을 수있는 경우 -사용replace(/\s+/g, '')


답변

var input = '/var/www/site/Brand new document.docx';

//remove space
input = input.replace(/\s/g, '');

//make string lower
input = input.toLowerCase();

alert(input);

작업 예를 보려면 여기를 클릭하십시오


답변

  var output = '/var/www/site/Brand new document.docx'.replace(/ /g, "");
    or
  var output = '/var/www/site/Brand new document.docx'.replace(/ /gi,"");

참고 : 공백을 제거하기 위해 ‘g’또는 ‘gi’를 사용하더라도 둘 다 동일하게 작동합니다.

replace 함수에서 ‘g’를 사용하면 정확히 일치하는지 확인합니다. 그러나 ‘gi’를 사용하면 대소 문자 구분을 무시합니다.

참고로 여기를 클릭하십시오 .


답변

정규식 + 바꾸기 ()

정규 표현식이 느릴 수 있지만 많은 사용 사례에서 개발자는 한 번에 몇 개의 문자열 만 조작하므로 속도를 고려하지 않는 것이 좋습니다. / /가 / \ s /보다 빠르더라도 ‘\ s’가 있으면 다른 개발자에게 어떤 일이 더 명확하게 진행되는지 설명 할 수 있습니다.

let string = '/var/www/site/Brand new document.docx';
let path = string.replace(/\s/g, '');
// path => '/var/www/site/Brandnewdocument.docx'

Split () + Join ()

Split + Join을 사용하면 문자열을 추가로 체인으로 조작 할 수 있습니다.

let string = '/var/www/site/Brand new document.docx';
let path => string.split('').map(char => /(\s|\.)/.test(char) ? '/' : char).join('');
// "/var/www/site/Brand/new/document/docx";