जावास्क्रिप्ट स्ट्रिंग में गैर-ब्रेकिंग स्पेस का प्रतिनिधित्व कैसे किया जाता है?


111

यह स्पष्ट रूप से काम नहीं कर रहा है:

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

क्या कोई गैर-ब्रेकिंग स्पेस या ampersand के बारे में कुछ है जो जावास्क्रिप्ट को पसंद नहीं है?


1
काम नहीं कर रहा है कैसे? फिर आप एक्स के साथ क्या कर रहे हैं?
एरिक फोर्ब्स

ओह, अगर मैं कहूँ तो X = $ td.html () यह काम करता है।
फिलिप सन् 19

8
याद रखें कि .text()मार्कअप को स्ट्रिप्स करें, इस प्रकार मुझे विश्वास नहीं है कि आप  एक गैर-मार्कअप परिणाम में खोजने जा रहे हैं ।
ब्रैड क्रिस्टी

1
मैं यहाँ गलत हो सकता हूँ, लेकिन html संस्थाओं का विस्तार नहीं करता है?
डेनिस क्रेमिंस्की

@ ब्रैड - आपको इसका जवाब देना चाहिए था। = पी
एरिक फोर्ब्स

जवाबों:


253

 एक HTML संस्था है। करते समय .text(), सभी HTML इकाइयां उनके चरित्र मानों को डिकोड की जाती हैं।

इकाई के उपयोग की तुलना करने के बजाय, वास्तविक कच्चे चरित्र का उपयोग करने की तुलना करें:

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

या आप चरित्र कोड से चरित्र को मैन्युअल रूप से बना सकते हैं इसे अपने जावास्क्रिप्ट रूप में बच गए:

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

के बारे String.fromCharCodeमें अधिक जानकारी यहाँ उपलब्ध है:

fromCharCode - एमडीसी डॉक्टर सेंटर

विभिन्न वर्णों के लिए वर्ण कोड के बारे में अधिक जानकारी यहाँ उपलब्ध है:

Windows-1252 चारसेट
UTF-8 चारसेट


@ कॉबल: बहुत सही ... यह वास्तव में सबसे सरल तरीका होगा।
एंड्रयू मूर

3
वाह। यह उत्तर इतना जटिल है, यह सही होना चाहिए! (मैं और जावास्क्रिप्ट तेल और पानी की तरह हैं)। लेकिन शायद अगर मैं हिंसक रूप से हिल गया हूं तो हम एक साथ मिलेंगे।
फिलिप सन् 19

साधारण स्थान टूट रहे हैं, इसलिए यह '\ x20' है, लेकिन '' का उपयोग करने के लिए बेहतर है।
पैट्रिक सज़ालापस्की

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

2

जब वह ब्राउज़र पृष्ठ को प्रस्तुत करता है तो वह इकाई उस चार में परिवर्तित हो जाती है, जिसका वह प्रतिनिधित्व करता है। JS (jQuery) पढ़े गए पृष्ठ को पढ़ता है, इस प्रकार यह ऐसे पाठ क्रम का सामना नहीं करेगा। अगर आप डबल एन्कोडिंग इकाइयाँ हैं तो इसका एकमात्र तरीका यह हो सकता है।


0

JQuery के डॉक्स text()कहते हैं

अलग-अलग ब्राउज़रों में HTML पार्सर में भिन्नता के कारण, वापस लौटा गया पाठ नए संस्करणों और अन्य सफेद स्थान में भिन्न हो सकता है।

मैं $td.html()इसके बजाय का उपयोग करेंगे ।


यह आपके पृष्ठ के मार्कअप में html टैग जोड़ देगा। उदाहरण के लिए, स्ट्रिंग '<text>' एक html तत्व होगा।
बरह
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.