깨지지 않는 공백은 JavaScript 문자열에서 어떻게 표현됩니까?


111

이것은 분명히 작동하지 않습니다.

X = $td.text();
if (X == ' ') {
X = '';
}

깨지지 않는 공백이나 JavaScript가 좋아하지 않는 앰퍼샌드에 대한 것이 있습니까?


1
어떻게 작동하지 않습니까? 그러면 X로 무엇을하고 있습니까?
Erik Forbes

아, X = $ td.html ()이라고하면 작동합니다.
Phillip Senn 2011 년

8
.text()마크 업 을 제거하므로 마크 업  이 아닌 결과에서 찾을 수 없다고 생각합니다 .
Brad Christie 2011 년

1
내가 틀렸을 수도 있지만 text ()는 html 엔티티를 확장하지 않습니까?
Dennis Kreminsky 2011 년

@Brad-당신은 그 대답을 만들어야했습니다. = P
Erik Forbes 2011 년

답변:


253

 HTML 엔티티입니다. 를 수행 .text()하면 모든 HTML 엔티티가 문자 값으로 디코딩됩니다.

엔티티를 사용하여 비교하는 대신 실제 원시 문자를 사용하여 비교하십시오.

var x = td.text();
if (x == '\xa0') { // Non-breakable space is char 0xa0 (160 dec)
  x = '';
}

또는 Javascript 이스케이프 형식으로 문자 코드에서 문자를 수동으로 만들 수도 있습니다.

var x = td.text();
if (x == String.fromCharCode(160)) { // Non-breakable space is char 160
  x = '';
}

자세한 내용은 String.fromCharCode여기에서 확인할 수 있습니다.

fromCharCode-MDC 문서 센터

다른 문자 세트의 문자 코드에 대한 자세한 정보는 여기에서 확인할 수 있습니다.

Windows-1252 문자셋
UTF-8 문자셋


@cobbal : 매우 사실입니다 ... 실제로는 더 간단한 방법이 될 것입니다.
Andrew Moore

3
와. 이 대답은 너무 복잡해서 정확해야합니다! (나와 JavaScript는 기름과 물과 같습니다). 하지만 내가 심하게 흔들리면 우리는 함께 섞일 것입니다.
Phillip Senn 2011 년

일반 공백이 끊어 지므로 '\ x20'이지만 ''를 사용하는 것이 좋습니다.
Patrick Szalapski

7

.text()마크 업 을 제거하므로 마크 업  이 아닌 결과에서 찾을 수 없다고 생각합니다 .

답변으로 만들어졌습니다 ....

var p = $('<p>').html('&nbsp;');
if (p.text() == String.fromCharCode(160) && p.text() == '\xA0')
    alert('Character 160');

대신 마크 업에 해당하는 ASCII가 반환되므로 경고를 표시합니다.


2
jQuery를 사용 $("<div>&nbsp;</div>").text().charCodeAt()하면 160(nbsp에 대한 유니 코드)
cobbal 2011 년

2

해당 엔티티는 브라우저가 페이지를 렌더링 할 때 나타내는 문자로 변환됩니다. JS (jQuery)는 렌더링 된 페이지를 읽으므로 이러한 텍스트 시퀀스가 ​​발생하지 않습니다. 이러한 문제를 만날 수있는 유일한 방법은 엔터티를 이중 인코딩하는 경우입니다.


0

대한이의 jQuery 문서 text()말한다

다른 브라우저에서 HTML 파서의 변형으로 인해 반환되는 텍스트는 줄 바꿈 및 기타 공백이 다를 수 있습니다.

$td.html()대신 사용하겠습니다 .


그러면 페이지의 마크 업에 html 태그가 추가됩니다. 예를 들어 '<text>'문자열은 html 요소가됩니다.
Barh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.