Bir JavaScript dizesinde bölünemez boşluk nasıl temsil edilir?


111

Görünüşe göre bu işe yaramıyor:

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

Bölünemez boşluk veya ve işareti hakkında JavaScript'in sevmediği bir şey var mı?


1
Nasıl çalışmıyor? O zaman X ile ne yapıyorsun?
Erik Forbes

Oh, eğer X = $ td.html () dersem işe yarıyor.
Phillip Senn

8
.text()İşaretlemenin kaldırıldığını unutmayın , bu yüzden  işaretlemesiz bir sonuç bulacağınıza inanmıyorum .
Brad Christie

1
Burada yanılıyor olabilirim, ancak text () html varlıklarını genişletmiyor mu?
Dennis Kreminsky

@Brad - buna bir cevap vermeliydin. = P
Erik Forbes

Yanıtlar:


253

 bir HTML varlığıdır. Yaparken .text(), tüm HTML varlıklarının kodu, karakter değerlerine göre çözülür.

Varlığı kullanarak karşılaştırma yapmak yerine, gerçek ham karakteri kullanarak karşılaştırın:

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

Veya karakteri Javascript çıkışlı biçiminde elle karakter kodundan da oluşturabilirsiniz:

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

Daha fazla bilgiyi String.fromCharCodeburada bulabilirsiniz:

fromCharCode - MDC Doküman Merkezi

Farklı karakter kümeleri için karakter kodları hakkında daha fazla bilgiyi burada bulabilirsiniz:

Windows-1252 Karakter Kümesi
UTF-8 Karakter Kümesi


@cobbal: Çok doğru ... Aslında daha basit bir yol olurdu.
Andrew Moore

3
Vay. Bu cevap çok karmaşık, doğru olmalı! (Ben ve JavaScript, yağ ve su gibiyiz). Ama belki şiddetle sarsılırsam birbirimize karışırız.
Phillip Senn

Sıradan boşluklar kırılıyor, bu yüzden "\ x20", ancak kullanılması daha iyi "
Patrick Szalapski

7

.text()İşaretlemenin kaldırıldığını unutmayın , bu yüzden  işaretlemesiz bir sonuç bulacağınıza inanmıyorum .

Bir cevaba dönüştürüldü ...

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

Bunun yerine işaretlemenin ASCII eşdeğeri döndürüldüğünden bir uyarı gösterir.


2
JQuery kullanarak bunun (nbsp için unicode) $("<div>&nbsp;</div>").text().charCodeAt()verdiğini görebiliriz160
cobbal

2

Bu varlık, tarayıcı sayfayı oluşturduğunda temsil ettiği karaktere dönüştürülür. JS (jQuery) oluşturulan sayfayı okur, böylelikle böyle bir metin dizisiyle karşılaşmaz. Böyle bir şeyle karşılaşmasının tek yolu, çift kodlama varlıkları olmanızdır.


0

İçin jQuery dokümanlar text()diyor

Farklı tarayıcılardaki HTML ayrıştırıcılarındaki farklılıklar nedeniyle, döndürülen metin yeni satırlarda ve diğer beyaz boşluklarda farklılık gösterebilir.

Onun $td.html()yerine kullanırdım.


Bu, sayfanızın biçimlendirmesine html etiketleri ekleyecektir. Örneğin, '<text>' dizesi bir html öğesi olacaktır.
Barh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.