Eliminar la última coma (y los posibles espacios en blanco después de la última coma) del final de una cadena

3 minutos de lectura

Avatar de usuario de AnaMaria
anamaria

Usando JavaScript, ¿cómo puedo eliminar la última coma, pero solo si la coma es el último carácter o si solo hay un espacio en blanco después de la coma? Este es mi código. tengo un trabajo violín. Pero tiene un error.

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

  • ¿Debería eliminar también los espacios al final?

    – Félix Kling

    18 de julio de 2013 a las 10:01

  • si es solo un espacio en blanco, sí

    – Ana María

    18 de julio de 2013 a las 10:01

  • ¿Qué hay de los espacios antes de la coma en cuestión? ¿Deberían eliminarse también? en cuyo caso: str = str.replace(/,\s*$/, “”); se convertiría en str = str.replace(/\s*,\s*$/, “”);

    – Amitabh

    13 de diciembre de 2016 a las 1:30


Esto eliminará la última coma y cualquier espacio en blanco después de ella:

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

Utiliza una expresión regular:

  • los / marcar el principio y el final de la expresión regular

  • los , coincide con la coma

  • los \s significa caracteres de espacio en blanco (espacio, tabulador, etc.) y el * significa 0 o más

  • los $ al final significa el final de la cadena

  • Use str.replace(/,+/g,”,”).replace(/(,\s*$)|(^,*)/, “”); si desea eliminar la coma vacía inicial o la coma doble, por ejemplo, “,,8,,7” se convertiría en “8,7”

    – miguel

    24 de agosto de 2017 a las 15:22


  • @ParkashKumar Jon ya ha mencionado sobre el último /. The / mark the beginning and end of the regular expression.

    – Asif Alí

    13 de diciembre de 2017 a las 10:11


  • Muy útil Gracias.

    – Alok Ranyan

    9 de julio de 2020 a las 10:19

avatar de usuario de e-techpulse
e-techpulse

puede eliminar la última coma de una cadena utilizando el método slice(), busque lo siguiente ejemplo:

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

Aquí hay un ejemplo

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>

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

Avatar de usuario de Komal
Komal

En caso de que sea útil o una mejor manera:

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

Reemplazará todas las siguientes combinaciones al final de la cadena:

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

Avatar de usuario de Booboo
Boo Boo

La respuesta altamente votada elimina no solo la coma final, sino también los espacios que siguen. Pero eliminar esos espacios siguientes fue no lo que era parte del problema original. Asi que:

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

https://jsfiddle.net/dc8moa3k/

posibilidad remota aquí

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

Avatar de usuario de Trai Hải Phòng
Trai Hải Phòng

puedes eliminar la última coma:

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

¿Ha sido útil esta solución?