문자열에서 공백을 제거하는 방법? 예를 들어 :
입력:
'/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";