একটি স্ট্রিং থেকে শেষ কমা সরান


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, ",") ব্যবহার করুন replace প্রতিস্থাপন (/ (, \ s * $) | (^, *) /, "")); আপনি যদি প্রাথমিক খালি কমা বা, ডাবল কমা উদাহরণস্বরূপ ",,, 8,, 7" মুছে ফেলতে চান তবে "8,7" হয়ে যাবে
মিগুয়েল

@ প্রকাশকুমার জনের ইতিমধ্যে শেষের কথা উল্লেখ করেছেন /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 চিহ্নিত করুন। আমি ভুল হলে আমি আপনার সমাধানটি চিহ্নিত করব +1
আনামারিয়া

http://jsfiddle.net/rpss/3rSNr/ সমস্ত কমা'র সূচকগুলি লুপে একের পর এক প্রতিস্থাপন করে "কারেন্টইন্ডেক্স" এ দেওয়া হয় (ম্যাচটি পাওয়া গেলে প্যাটার্নের সাথে মিল রেখে টেস্টিং আনার জন্য)। অবশেষে সেই পরিবর্তনশীলটি শেষ

:) সত্য, সেই কোডটি সর্বশেষ কমাটি সরিয়ে ফেলবে, তবে আপনি বাক্য শেষে শেষ কমাটি অপসারণ করতে চেয়েছিলেন , সেখানে..এখানে .. আপনার প্রশ্নটি +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

প্রথমত, শেষের অক্ষরটি কমা কিনা তা পরীক্ষা করা উচিত। এটি উপস্থিত থাকলে এটি সরিয়ে দিন।

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

নোট str.indexOf (',', এই দৈর্ঘ্য - ',' দৈর্ঘ্য) str.indexOf (',', এই দৈর্ঘ্য - 1) সরল করা যেতে পারে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.