jQuery के साथ पाठ को हथियाने के दौरान मैं सफेद स्थान कैसे छीन सकता हूं?


183

मैं mailto लपेटने के लिए jQuery का उपयोग करना चाहता हूं: एक ईमेल पते के आसपास लंगर, लेकिन यह भी सीएमपी पैदा कर रहा है कि व्हाइटस्पेस हथियाने है।

यहाँ HTML है जिसके साथ मुझे काम करना है, स्क्रिप्ट मेरे पास है और आउटपुट की एक प्रति है।

एचटीएमएल

<div class="field field-type-text field-field-email">
  <div class="field-item">
    name@example.com    </div>
</div>

jQuery जावास्क्रिप्ट

$(document).ready(function(){
  $('div.field-field-email .field-item').each(function(){
    var emailAdd = $(this).text();
      $(this).wrapInner('<a href="mailto:' + emailAdd + '"></a>');
   });
 });

HTML उत्पन्न की

<div class="field field-type-text field-field-email">
  <div class="field-items"><a href="mailto:%0A%20%20%20%20name@example.com%20%20%20%20">
    name@example.com    </a></div>
</div>

हालांकि मुझे संदेह है कि इस प्रश्न को पढ़ने वाले अन्य लोग केवल प्रमुख और पूंछता हुआ व्हाट्सएप बंद करना चाहते हैं, मुझे यह मानते हुए कि यह एक ईमेल पता है जिसे मैं लपेट रहा हूं, सभी व्हाट्सएप को खोने में काफी खुश हूं।


संभावित डुप्लिकेट: stackoverflow.com/questions/10800355/…
अज्ञात देव

जवाबों:


333

Js में replaceफ़ंक्शन का उपयोग करें :

var emailAdd = $(this).text().replace(/ /g,'');

जो सभी रिक्त स्थान को हटा देगा

यदि आप केवल अग्रणी और अनुगामी व्हाट्सएप को हटाना चाहते हैं , तो jQuery $ .trim विधि का उपयोग करें:

var emailAdd = $.trim($(this).text());

11
सही लेकिन / \ s / g एक स्पष्ट पैटर्न होगा ("i" बेमानी है और '' एक असामान्य रूप है - / / (^ \ s *) का एक पैटर्न भी fwiw। (\ S * $) / g है ट्रिम के बराबर।
annakata 10

1
आप सही अन्नकटा हैं, मैंने / i को हटा दिया क्योंकि यह अतिरेक है क्योंकि इस मामले में संवेदनशीलता कोई मुद्दा नहीं है
एंड्रियास ग्रीच

6
सावधान होने की एक बात यह है कि IE गैर-ब्रेकिंग स्पेस (& nbsp ;, & # 160 ;, & xA0 ;, \ xA0, \ u00A0, आदि ...) को व्हाइट-स्पेस के रूप में नहीं मानता है, इसलिए / [ सभी सफ़ेद स्थान को बदलने के लिए \ s \ xA0] + / g अधिक विश्वसनीय हो सकता है।
ट्रैविस

100

जावास्क्रिप्ट ट्रिम में बनाया गया है:

str.trim()

यह IE8 में काम नहीं करता है। यदि आपको पुराने ब्राउज़रों का समर्थन करना है, तो Tuxmentat या पॉल के उत्तर का उपयोग करें ।


69

दरअसल, jQuery में एक ट्रिम फंक्शन है:

 var emailAdd = jQuery.trim($(this).text());

देखें यहाँ जानकारी के लिए।


3
क्योंकि प्रत्येक निर्मित फीचर में jQuery का आवरण होना चाहिए
jasonszhao

24

str=str.replace(/^\s+|\s+$/g,'');


1
यह PHP ट्रिम फ़ंक्शन की तरह प्रमुख और पीछे के सफेद स्थान को हटा देता है।
पॉल

1
क्या आप अपने आप को समझा सकते हैं?
फ्रांसिस्को कॉर्लेस मोरेल्स

1
@FranciscoCorralesMorales: मुझे लगता है कि आपके पास यहां एक विकल्प है: नियमित अभिव्यक्तियों के बारे में जानें या नहीं। यदि आप करते हैं, तो अभिव्यक्ति स्व-स्पष्ट हो जाएगी, और यदि आप नहीं करते हैं तो समझाना मुश्किल होगा, इसलिए इसे समझना आसान है। इसलिए: नियमित अभिव्यक्तियों के बारे में जानें। यदि आप उन्हें सीखने की कोशिश करने के बाद भी नहीं समझ पा रहे हैं, तो आप जो नहीं समझते हैं, उसके बारे में एक विशिष्ट प्रश्न पूछें।
पीटर वी। मॉर्क

5
ऐसा कुछ भी कैसे हो सकता है जो इस तरह दिखता है / ^ \ s + | \ s + $ / g को "नियमित" कहा जाए?
रयाननेर्ड 3

उन्हें नियमित अभिव्यक्ति कहा जाता है क्योंकि वे नियमित भाषाओं, ऐसी भाषाओं का वर्णन कर सकते हैं जिन्हें एक परिमित-राज्य मशीन का उपयोग करके पार्स किया जा सकता है। नियमित रूप से, अपने शुद्धतम रूप में, वास्तव में एक परिमित-राज्य मशीन का वर्णन करने का एक तरीका है। यह देखते हुए कि आपके कोड में एक ऑटोमेटन के आरेख को इस तरह से शामिल करना कितना कठिन होगा, जिसे कंप्यूटर समझ सकता है, नियमित अभिव्यक्ति बहुत भयानक हैं, भले ही उनकी मरोड़ उन्हें मनुष्यों के लिए पार्स करने के लिए काफी कठिन बना सकती है।
क्वांटुमोमेगा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.