एक स्ट्रिंग से अंतिम कोमा निकालें


139

जावास्क्रिप्ट का उपयोग करते हुए, मैं अंतिम अल्पविराम कैसे निकाल सकता हूं, लेकिन केवल अगर अल्पविराम ही अंतिम वर्ण है या यदि अल्पविराम के बाद केवल सफेद स्थान है? यह मेरा कोड है। मुझे वर्किंग फील मिला । लेकिन इसका एक बग है।

var str = 'This, is a test.'; 
alert( removeLastComma(str) ); // should remain unchanged

var str = 'This, is a test,'; 
alert( removeLastComma(str) ); // should remove the last comma

var str = 'This is a test,          '; 
alert( removeLastComma(str) ); // should remove the last comma

function removeLastComma(strng){        
    var n=strng.lastIndexOf(",");
    var a=strng.substring(0,n) 
    return a;
}

यह भी अंत में रिक्त स्थान को दूर करना चाहिए?
फेलिक्स क्लिंग

यदि इसका एकमात्र खाली स्थान है, तो हां
अनामरिया

प्रश्न में अल्पविराम से पहले किसी भी स्थान के बारे में कैसे? क्या उन्हें भी हटाया जाना चाहिए? जो मामले में: str = str.replace (/, \ s * $ /, ""); बन जाएगा str = str.replace (/ \ s *, \ s * $ /, "");
अमिताभ

जवाबों:


391

यह अंतिम अल्पविराम और उसके बाद किसी भी व्हाट्सएप को हटा देगा:

str = str.replace(/,\s*$/, "");

यह एक नियमित अभिव्यक्ति का उपयोग करता है:

  • /मार्क शुरुआत और नियमित अभिव्यक्ति के अंत

  • ,अल्पविराम से मेल खाता है

  • \sसाधन खाली स्थान के वर्ण (अंतरिक्ष, टैब, आदि) और *साधन 0 या अधिक

  • $अंत में स्ट्रिंग के अंत का प्रतीक है


Str.replace (/, + / g, ",") का उपयोग करें। (/, \ / s * $) (^, *) /, "") को बदलें; यदि आप प्रारंभिक खाली कॉमा या, डबल कॉमा को निकालना चाहते हैं, उदाहरण के लिए ",, 8, 7," "8,7" बन जाएगा
मिगुएल

@ParkashKumar जॉन ने पहले ही अंतिम के बारे में उल्लेख किया है /The / mark the beginning and end of the regular expression
आसिफ अली

बहुत उपयोगी धन्यवाद।
आलोक रंजन

13

आप स्लाइस () विधि का उपयोग करके एक स्ट्रिंग से अंतिम अल्पविराम को हटा सकते हैं, नीचे दिए गए उदाहरण को खोजें :

var strVal = $.trim($('.txtValue').val());
var lastChar = strVal.slice(-1);
if (lastChar == ',') {
    strVal = strVal.slice(0, -1);
}

यहाँ एक उदाहरण है

function myFunction() {
	var strVal = $.trim($('.txtValue').text());
	var lastChar = strVal.slice(-1);
	if (lastChar == ',') { // check last character is string
		strVal = strVal.slice(0, -1); // trim last character
		$("#demo").text(strVal);
	}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<p class="txtValue">Striing with Commma,</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>



3

यहां लंबा शॉट

var sentence="I got,. commas, here,";
var pattern=/,/g;
var currentIndex;
while (pattern.test(sentence)==true)  {    
  currentIndex=pattern.lastIndex;
 }
if(currentIndex==sentence.trim().length)
alert(sentence.substring(0,currentIndex-1));
else
 alert(sentence);

हालाँकि प्रश्न का उत्तर पहले ही दिया जा चुका है, मैं आपके समाधान से सहमत था और परीक्षण करने का निर्णय लिया। दुर्भाग्य से, यह काम नहीं करता है :(
अनामारिया

इस इनपुट का उपयोग करें "यह, एक परीक्षण है।" आदर्श रूप से आउटपुट एक ही वाक्य होना चाहिए लेकिन आपके प्रोग्राम में इसे "यह" के रूप में देता है। यदि मैं सही हूं तो मेरे प्रश्न को चिह्नित करें +1। अगर im गलत है तो मैं आपके समाधान को +1 करूँगा
AnaMaria

http://jsfiddle.net/rpss/3rSNr/ सभी अल्पविराम के सूचकांक प्राप्त किए जाते हैं और "करंटइंडेक्स" में डाल दिए जाते हैं, जो एक के बाद एक लूप में बदलते हैं (मैचिंग पैटर्न के लिए tesing और जब एक मैच मिलता है तो सूचकांक प्राप्त करना)। अंत में वह चर अंतिम अल्पविराम के सूचकांक के साथ छोड़ दिया जाता है

:) यह सच है, कि कोड अंतिम अल्पविराम को हटा देगा, लेकिन आप वाक्य के अंत में अंतिम अल्पविराम चाहते थे , वहाँ..तो .. आपका प्रश्न +1 चिह्नित है

बिल्कुल नहीं। आपने इस भाग को याद किया "लेकिन केवल अगर अल्पविराम ही अंतिम पात्र है या यदि अल्पविराम के बाद केवल श्वेत स्थान है"
अनामरिया

3

बहुत उखाड़ा हुआ उत्तर न केवल अंतिम अल्पविराम को हटाता है, बल्कि किसी भी रिक्त स्थान का भी अनुसरण करता है। लेकिन उन निम्नलिखित स्थानों को हटाना मूल समस्या का हिस्सा नहीं था। इसलिए:

let str = 'abc,def,ghi, ';
let str2 = str.replace(/,(?=\s*$)/, '');
alert("'" + str2 + "'");
'abc,def,ghi '

https://jsfiddle.net/dc8moa3k/


1

समस्या यह है कि आप स्ट्रिंग में अंतिम कॉमा को हटाते हैं, कॉमा में नहीं अगर यह स्ट्रिंग में आखिरी चीज है। इसलिए आपको यह पता लगाना चाहिए कि क्या अंतिम चार ',' है या नहीं और अगर है तो उसे बदल दें।

संपादित करें: यह वास्तव में भ्रामक है?

'यह, एक यादृच्छिक स्ट्रिंग है'

आपका कोड स्ट्रिंग से अंतिम कॉमा पाता है और केवल 'यह' संग्रहीत करता है, क्योंकि, अंतिम कॉमा स्ट्रिंग के अंत में नहीं है।


9
आपका जवाब सवाल से ज्यादा भ्रामक है। क्रूरतापूर्ण ईमानदारी के लिए खेद है
अनामरिया

मैं बहुत कुछ मिलता है। आपकी स्क्रिप्ट स्ट्रिंग में अंतिम कोमा ढूंढती है और इसके बाद सब कुछ हटा देती है। उस स्थिति में यदि अल्पविराम इस बीच में है जैसे 'यह, एक परीक्षण है।' कमांड strng.lastIndexOf (","); 4 लौटेंगे, इस प्रकार 5 वें अक्षर के बाद सब कुछ हटा दिया जाएगा। तो आपको यह देखना होगा कि क्या "," बाकी को हटाने से पहले स्ट्रिंग का अंतिम अक्षर है :)
हिस्टो वल्कनकोव

1
मुझे समझ में आया कि तुम क्या मतलब है और मुझे वह मिल गया जहां मैं गलत हो रहा था। लेकिन आप जवाब एक टिप्पणी के रूप में अधिक उपयुक्त हैं क्योंकि इससे मुझे बहुत मदद नहीं मिली। आशा है कि आपको वही मिलेगा जो मैं कह रहा हूं। कोई अपराध नहीं
अनामरिया

मैं अनुरोध करने पर भी कोड जोड़ने की योजना बना रहा था, लेकिन फ़िडेल में संपादन करने पर मैंने देखा कि पहले से ही एक सही उत्तर था इसलिए मैंने इसे ऐसे ही छोड़ दिया। :)
हिस्टोरो वल्कनकोव

1

आप अंतिम अल्पविराम हटा सकते हैं:

var sentence = "I got,. commas, here,";
sentence = sentence.replace(/(.+),$/, '$1');
console.log(sentence);

1

अंतिम अल्पविराम निकालें। काम करने का उदाहरण

function truncateText() {
  var str= document.getElementById('input').value;
  str = str.replace(/,\s*$/, "");
  console.log(str);
}
<input id="input" value="address line one,"/>
<button onclick="truncateText()">Truncate</button>


1

सबसे पहले, यदि अंतिम वर्ण अल्पविराम है, तो उसे जांचना चाहिए। यदि यह मौजूद है, तो इसे हटा दें।

if (str.indexOf(',', this.length - ','.length) !== -1) {
    str = str.substring(0, str.length - 1);
}

नोट str.indexOf (',', this.length - ',' लंबाई) को str.indexOf (',', this.length - 1) में सरल बनाया जा सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.