itsource

자바스크립트에서 문자열 내부의 공백 제거

mycopycode 2023. 10. 9. 22:34
반응형

자바스크립트에서 문자열 내부의 공백 제거

javascript trim에 대한 이 질문을 읽었는데, regex 답변이 있습니다.

그럼 트림이 헬로와 월드 사이의 내부 공간을 없애줄 것으로 기대합니다.

function myFunction() {
    alert("Hello World ".trim());
}

편집됨

내가 그걸 기대한 이유는?

말도 안 돼요!트림이 내부 공간을 제거하는 것은 아닙니다! 앞과 뒤의 공간만 제거하는 것입니다. 트림은 그렇게 작동합니다. 매우 잘못된 질문입니다. 죄송합니다.

공백 문자 제거용

"hello world".replace(/\s/g, "");

모든 우주 공간은 아래 댓글에 있는 로켓의 제안을 사용하세요!

사용가능

"Hello World ".replace(/\s+/g, '');

trim()문자열의 후행 공백만 제거합니다(체인의 첫 번째와 마지막).이 경우 하나 이상의 공백을 동시에 제거할 수 있으므로 이 regExp가 더 빠릅니다.

대체 빈 문자열을 '$'로 변경하면 차이가 훨씬 명확해집니다.

var string= '  Q  W E   R TY ';
console.log(string.replace(/\s/g, '$'));  // $$Q$$W$E$$$R$TY$
console.log(string.replace(/\s+/g, '#')); // #Q#W#E#R#TY#

성능비교 -/\s+/g더 빠릅니다.여기 참조: http://jsperf.com/s-vs-s

갱신하다

다음을 사용할 수도 있습니다.

console.log(string.replaceAll(/\s/, '#')); // #Q#W#E#R#TY#

문자열.prototype.replaceAll()

공백만 교체하려면 이렇게 하는 것이 가장 좋습니다.

let str = " H e l l o 1  5 9   ";
let onlyCharacters = str.replaceAll(" ", "");

// onlyCharacters = Hello159

사용했습니다.str.replace(/\s/g, "");많은 양이 있지만 모든 브라우저에서 작동하지 않습니다. 예를 들어 안드로이드에서는 덕덕고에서 작동하지 않으며 안드로이드 웹뷰에서도 작동하지 않습니다.

아마도 당신이 수락된 답변에서 해결책을 실행하는 것을 잊었기 때문일 것입니다.그것이 바로 우리가trim()일하다.

갱신하다

이 답변은 이전 브라우저에만 적용됩니다.최신 브라우저는 다음을 지원합니다.trim()토속적으로

Strings replace 메서드를 정규식과 함께 사용할 수 있습니다.

"Hello World ".replace(/ /g, "");

replace() 메서드는 대체로 대체된 패턴의 일부 또는 전부 일치하는 새 문자열을 반환합니다.패턴은 문자열 또는 RegExp일 수 있습니다.

RegExp

  • / / - 정규식 일치공간

  • g - 글로벌 플래그. 첫 번째 매치 후 중지하지 않고 모든 매치 찾기

const str = "H    e            l l       o  World! ".replace(/ /g, "");
document.getElementById("greeting").innerText = str;
<p id="greeting"><p>

재귀적 솔루션을 사용할 수 있습니다.

function removeWhitespaces(string, i = 0, res = "") {
  if (i >= string.length)
    return res
  else
  if (string[i] == " ")
    return removeWhitespaces(string, i + 1, res)
  else
    return removeWhitespaces(string, i + 1, res += string[i])
}

console.log(removeWhitespaces(" Hello World,   how is it going ? "))

이것에 접근하는 방법에 대한 정확한 답은 정확한 의도에 달려 있습니다.공백 문자를 모두 제거하려면 다음을 사용해야 합니다.

's t r i n g'.replace(\s+\g, '')

특정 유형의 공백(예: 얇은 공간 또는 머리카락 공간)만 제거하려는 경우 다음과 같이 명시적으로 나열해야 합니다.

's t r i n g'.replace(\ |\t \g, '')

그러나 일반 공간만 제거하고자 하는 경우 성능 측면에서 가장 좋은 해결책은 다음과 같습니다.

's t r i n g'.replace(' ', '')


다음은 결과를 비교한 벤치마크입니다.정규 표현 솔루션 간에 약간의 성능 차이가 있지만 이는 다소 중요하지 않습니다.그러나 문자열 기반 대체는 링크된 벤치마크에서 정규 예제보다 ops/s 크기가 약 10배 더 높습니다.(https://jsbench.me/drlfuphfhk/1)

언급URL : https://stackoverflow.com/questions/10800355/remove-whitespaces-inside-a-string-in-javascript

반응형