Remove Last Comma from a string

Javascript

Javascript Problem Overview


Using JavaScript, how can I remove the last comma, but only if the comma is the last character or if there is only white space after the comma? This is my code. I got a working fiddle. But it has a bug.

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;
}

Javascript Solutions


Solution 1 - Javascript

This will remove the last comma and any whitespace after it:

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

It uses a regular expression:

  • The / mark the beginning and end of the regular expression

  • The , matches the comma

  • The \s means whitespace characters (space, tab, etc) and the * means 0 or more

  • The $ at the end signifies the end of the string

Solution 2 - Javascript

you can remove last comma from a string by using slice() method, find the below example:

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

Here is an Example

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>

Solution 3 - Javascript

function removeLastComma(str) {
   return str.replace(/,(\s+)?$/, '');   
}

Solution 4 - Javascript

In case its useful or a better way:

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

It will replace all following combination end of the string:

1. ,<no space>
2. ,<spaces> 
3. ,  ,  , ,   ,
4. <spaces>
5. <spaces>,
6. <spaces>,<spaces>

Solution 5 - Javascript

The greatly upvoted answer removes not only the final comma, but also any spaces that follow. But removing those following spaces was not what was part of the original problem. So:

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

https://jsfiddle.net/dc8moa3k/

Solution 6 - Javascript

long shot here

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);

Solution 7 - Javascript

Remove last comma. Working example

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>

Solution 8 - Javascript

you can remove last comma:

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

Solution 9 - Javascript

First, one should check if the last character is a comma. If it exists, remove it.

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

NOTE str.indexOf(',', this.length - ','.length) can be simplified to str.indexOf(',', this.length - 1)

Solution 10 - Javascript

The problem is that you remove the last comma in the string, not the comma if it's the last thing in the string. So you should put an if to check if the last char is ',' and change it if it is.

EDIT: Is it really that confusing?

'This, is a random string'

Your code finds the last comma from the string and stores only 'This, ' because, the last comma is after 'This' not at the end of the string.

Solution 11 - Javascript

With or without Regex.

I suggest two processes and also consider removing space as well. Today I got this problem and I fixed this by writing the below code.

I hope this code will help others.

//With the help of Regex
var str = "        I am in Pakistan, I am in India, I am in Japan,     ";
var newstr = str.replace(/[, ]+$/, "").trim();
console.log(newstr);


//Without Regex
function removeSpaceAndLastComa(str) {
  var newstr = str.trim();
  var tabId = newstr.split(",");
  strAry = [];
  tabId.forEach(function(i, e) {
    if (i != "") {
      strAry.push(i);
    }
  })
  console.log(strAry.join(","));
}

removeSpaceAndLastComa(str);

Solution 12 - Javascript

If you are targeting es6, then you can simply do this

str = Array.from( str ).splice(0, str.length - 1).join('');
  • This Array.from(str) converts the string to an array (so we can slice it)

  • This splice( 0 , str.length - 1 ) returns an array with the items from the array sequentially except the last item in the array

  • This join('') joins the entries in the array to form a string

Then if you want to make sure that a comma actually ends the string before performing the operation, you can do something like this

str = str.endsWith(',') ? Array.from(str).splice(0,str.length - 1).join('') : str;

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAnaMariaView Question on Stackoverflow
Solution 1 - JavascriptJonView Answer on Stackoverflow
Solution 2 - Javascripte-techpulseView Answer on Stackoverflow
Solution 3 - JavascriptDaniel SloofView Answer on Stackoverflow
Solution 4 - JavascriptKomalView Answer on Stackoverflow
Solution 5 - JavascriptBoobooView Answer on Stackoverflow
Solution 6 - Javascriptuser2587132View Answer on Stackoverflow
Solution 7 - JavascriptDeepu ReghunathView Answer on Stackoverflow
Solution 8 - JavascriptTrai Hải PhòngView Answer on Stackoverflow
Solution 9 - JavascriptMax Alexander HannaView Answer on Stackoverflow
Solution 10 - JavascriptHristo ValkanovView Answer on Stackoverflow
Solution 11 - JavascriptZaid Bin KhalidView Answer on Stackoverflow
Solution 12 - JavascriptHenry ObiaraijeView Answer on Stackoverflow