javascript - एक स्थान के साथ कई रिक्त स्थान को बदलने के लिए Regex




jquery (12)

एक स्ट्रिंग को देखते हुए:

"The dog      has a long   tail, and it     is RED!"

रिक्त स्थान को केवल एक स्थान अधिकतम रखने के लिए किस तरह का jQuery या जावास्क्रिप्ट जादू का उपयोग किया जा सकता है?

लक्ष्य:

"The dog has a long tail, and it is RED!"

Jquery में ट्रिम () फ़ंक्शन है जो मूल रूप से "फू बार" जैसे "फू बार" में कुछ बदल जाता है।

var string = "  My     String with  Multiple lines    ";
string.trim(); // output "My String with Multiple lines"

यह बहुत उपयोगी है क्योंकि यह शुरुआत में और स्ट्रिंग के अंत में खाली रिक्त स्थान को स्वचालित रूप से हटा देता है। कोई regex की जरूरत नहीं है।


एक और मजबूत विधि: यदि वे मौजूद हैं, तो प्रारंभिक और पिछली जगहों को हटाने का भी ख्याल रखता है। उदाहरण के लिए:

// NOTE the possible initial and trailing spaces
var str = "  The dog      has a long   tail, and it     is RED!  "

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

// str -> "The dog has a long tail, and it is RED !"

आपके उदाहरण में उन रिक्त स्थान नहीं थे लेकिन वे भी एक बहुत ही सामान्य परिदृश्य हैं, और स्वीकृत उत्तर केवल उन्हें एक ही स्थान पर ट्रिम कर रहा था, जैसे: "... लाल!", जो आपको आम तौर पर नहीं चाहिए।


एक ही स्थान के साथ कई रिक्त स्थान को प्रतिस्थापित करने के लिए इसे आज़माएं।

<script type="text/javascript">
    var myStr = "The dog      has a long   tail, and it     is RED!";
    alert(myStr);  // Output 'The dog      has a long   tail, and it     is RED!'

    var newStr = myStr.replace(/  +/g, ' ');
    alert(newStr);  // Output 'The dog has a long tail, and it is RED!'
</script>

सिंगल स्पेस के साथ एकाधिक स्पेस को बदलकर @ और पढ़ें


और अधिक मजबूत:

function trim(word)
{
    word = word.replace(/[^\x21-\x7E]+/g, ' '); // change non-printing chars to spaces
    return word.replace(/^\s+|\s+$/g, '');      // remove leading/trailing spaces
}

मुझे पता है कि मैं पार्टी के लिए देर हो चुकी हूं, लेकिन मुझे एक अच्छा समाधान मिला।

यह रहा:

var myStr = myStr.replace(/[ ][ ]*/g, ' ');


यदि आप प्रतिस्थापन का उपयोग नहीं करना चाहते हैं तो यहां एक वैकल्पिक समाधान है (जावास्क्रिप्ट को प्रतिस्थापित किए बिना स्ट्रिंग में रिक्त स्थान बदलें)

var str="The dog      has a long   tail, and it     is RED!";
var rule=/\s{1,}/g;
str = str.split(rule).join(" "); 
document.write(str);

यह एक समाधान है, हालांकि यह सभी अंतरिक्ष पात्रों को लक्षित करेगा:

"The      dog        has a long tail,      and it is RED!".replace(/\s\s+/g, ' ')

"The dog has a long tail, and it is RED!"

संपादित करें : यह शायद बेहतर है क्योंकि यह 1 या अधिक रिक्त स्थान के बाद एक स्थान को लक्षित करता है:

"The      dog        has a long tail,      and it is RED!".replace(/  +/g, ' ')

"The dog has a long tail, and it is RED!"

वैकल्पिक तरीका:

"The      dog        has a long tail,      and it is RED!".replace(/ {2,}/g, ' ')
"The dog has a long tail, and it is RED!"

मैंने स्वयं /\s+/ उपयोग नहीं किया क्योंकि इससे रिक्त स्थान बदलते हैं जो 1 वर्ण को कई बार फैलाता है और यह कम कुशल हो सकता है क्योंकि यह आवश्यक से अधिक लक्षित करता है।

यदि बग हैं तो मैंने इनमें से किसी भी एलएमके का गहराई से परीक्षण नहीं किया था।

साथ ही, यदि आप स्ट्रिंग प्रतिस्थापन करने जा रहे हैं तो वैरिएबल / प्रॉपर्टी को अपने प्रतिस्थापन में फिर से असाइन करना याद रखें, उदाहरण के लिए:

var string = 'foo'
string = string.replace('foo', '')

JQuery.prototype.text का उपयोग करना:

var el = $('span:eq(0)');
el.text( el.text().replace(/\d+/, '') )

हम sed सिस्टम कमांड की मदद से समझाए गए निम्नलिखित रेगेक्स का उपयोग कर सकते हैं। इसी तरह के regex अन्य भाषाओं और प्लेटफार्मों में इस्तेमाल किया जा सकता है।

पाठ को कुछ फाइल में टेक्स्ट जोड़ें

manjeet-laptop:Desktop manjeet$ cat test
"The dog      has a long   tail, and it     is RED!"

हम एक ही स्थान के साथ सभी सफेद रिक्त स्थान को प्रतिस्थापित करने के लिए निम्न रेगेक्स का उपयोग कर सकते हैं

manjeet-laptop:Desktop manjeet$ sed 's/ \{1,\}/ /g' test
"The dog has a long tail, and it is RED!"

उम्मीद है कि यह उद्देश्य प्रदान करता है


Newbies et al के लिए व्यापक unencrypted जवाब।

यह मेरे जैसे सभी डमीज़ के लिए है जो आपके कुछ लोगों द्वारा लिखी गई स्क्रिप्ट का परीक्षण करते हैं जो काम नहीं करते हैं।

निम्नलिखित 3 उदाहरण निम्नलिखित 3 वेबसाइटों पर विशेष वर्णों और अतिरिक्त रिक्त स्थान को निकालने के लिए किए गए कदम हैं (जिनमें से सभी पूरी तरह से काम करते हैं) {1। EtaVisa.com 2. EtaStatus.com 3. Tikun.com} इसलिए मुझे पता है कि ये काम पूरी तरह से हैं।

हमने इन्हें एक समय में 50 से अधिक और कोई समस्या नहीं है।

// इसने विशेष वर्ण + 0-9 हटा दिए और केवल अक्षरों (ऊपरी और कम मामले) के लिए अनुमति देता है

function NoDoublesPls1()
{
var str=document.getElementById("NoDoubles1");
var regex=/[^a-z]/gi;
str.value=str.value.replace(regex ,"");
}

// यह विशेष वर्ण हटा दिया गया है और केवल अक्षरों (ऊपरी और कम मामले) और 0-9 और रिक्त स्थान के लिए अनुमति देता है

function NoDoublesPls2()
{
var str=document.getElementById("NoDoubles2");
var regex=/[^a-z 0-9]/gi;
str.value=str.value.replace(regex ,"");
}

// यह विशेष वर्ण हटा दिया गया है और अंत में अक्षरों (ऊपरी और निम्न मामले) और 0-9 और रिक्त स्थान // .replace (/ \ s \ s + / g, "") अंत में अत्यधिक रिक्त स्थान को हटा देता है // जब मैं इस्तेमाल किया एकल उद्धरण, यह काम नहीं किया।

function NoDoublesPls3()
{    var str=document.getElementById("NoDoubles3");
var regex=/[^a-z 0-9]/gi;
str.value=str.value.replace(regex ,"") .replace(/\s\s+/g, " ");
}

:: अगला :: a .js 3j के रूप में सहेजें # 3 // मैंने मेरा NoDoubles.js कहा

:: अगला :: अपने जेएस को अपने पेज में शामिल करें

 <script language="JavaScript" src="js/NoDoubles.js"></script>

इसे अपने फॉर्म फ़ील्ड :: जैसे कि इसमें शामिल करें

<INPUT type="text" name="Name"
     onKeyUp="NoDoublesPls3()" onKeyDown="NoDoublesPls3()" id="NoDoubles3"/>

तो ऐसा लगता है कि ऐसा लगता है

<INPUT type="text" name="Name" onKeyUp="NoDoublesPls3()" onKeyDown="NoDoublesPls3()" id="NoDoubles3"/>

यह विशेष वर्णों को हटा देगा, एकल रिक्त स्थान की अनुमति देगा और अतिरिक्त रिक्त स्थान हटा देगा।


var str = "The      dog        has a long tail,      and it is RED!";
str = str.replace(/ {2,}/g,' ');

संपादित करें: यदि आप सभी प्रकार के व्हाइटस्पेस वर्णों को प्रतिस्थापित करना चाहते हैं तो सबसे प्रभावी तरीका इस प्रकार होगा:

str = str.replace(/\s{2,}/g,' ');

var string = "The dog      has a long   tail, and it     is RED!";
var replaced = string.replace(/ +/g, " ");

या यदि आप टैब को प्रतिस्थापित करना चाहते हैं:

var replaced = string.replace(/\s+/g, " ");





regex