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.