반응형
JavaScript 문자열에서 너비가 0 인 공백 문자 제거
사용자 입력 (JS 코드)을 받아 실시간으로 실행 (처리)하여 일부 출력을 표시합니다.
때로는 코드에 너비가 0 인 공간이 있는데 정말 이상합니다. 사용자가 어떻게 입력하는지 모르겠습니다. 예 - "($".length === 3
JS의 코드에서 해당 문자를 제거 할 수 있어야합니다. 어떻게해야합니까? 또는 브라우저가 0 너비 공백 문자를 고려하지 않도록 JS 코드를 실행하는 다른 방법이 있습니까?
유니 코드에는 다음과 같은 제로 너비 문자가 있습니다.
- U + 200B 제로 너비 공간
- U + 200C 너비가 0 인 비결 합자 유니 코드 코드 포인트
- U + 200D 제로 너비 결합 자 유니 코드 코드 포인트
- U + FEFF 너비가 0 인 줄 바꿈없는 공백 유니 코드 코드 포인트
JavaScript의 문자열에서 제거하려면 간단한 정규식을 사용할 수 있습니다.
var userInput = 'a\u200Bb\u200Cc\u200Dd\uFEFFe';
console.log(userInput.length); // 9
var result = userInput.replace(/[\u200B-\u200D\uFEFF]/g, '');
console.log(result.length); // 5
표시되지 않을 수있는 더 많은 기호가 있습니다. 예를 들어 ASCII의 제어 문자 중 일부입니다 .
일부 보이지 않는 문자가 내 JSON을 손상시키고 내 사이트를 충돌 시키는 예기치 않은 토큰 ILLEGAL 예외를 발생시키는 문제가있었습니다 .
RegExp 변수를 사용하는 내 솔루션은 다음과 같습니다.
var re = new RegExp("\u2028|\u2029");
var result = text.replace(re, '');
Javascript 및 제로 너비 공백에 대한 자세한 내용은 여기에서 찾을 수 있습니다. 제로 너비 공백
str.replace(/\u200B/g,'');
200B는 너비가 0 인 공간 8203의 16 진수입니다.이를 제거하려면 빈 문자열로 바꾸십시오.
[].filter.call( str, function( c ) {
return c.charCodeAt( 0 ) !== 8203;
} );
8203 문자 코드 (폭이 0 인 유니 코드 번호)를 제거하려면 각 문자를 필터링하십시오.
반응형
'code' 카테고리의 다른 글
Notepad ++에서 줄 범위 선택 (0) | 2021.01.07 |
---|---|
안드로이드 java.lang.NoClassDefFoundError (0) | 2021.01.07 |
OpenCV 및 Python을 사용하여 웹캠 피드 표시 (0) | 2021.01.06 |
Django 템플릿에서 변수를 사전 키로 사용 (0) | 2021.01.06 |
속성 설정자가 공용인지 확인하는 방법 (0) | 2021.01.06 |