Supprimer la dernière virgule d'une chaîne

En utilisant JavaScript, comment puis-je supprimer la dernière virgule, mais seulement si la virgule est le dernier caractère ou s'il n'y a que de l'espace blanc après la virgule? C'est mon code. J'ai eu une violon de travail. Mais il a un 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; } 

Cela supprimera la dernière virgule et tous les espaces après elle:

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

Il utilise une expression régulière:

  • Le / marque le début et la fin de l'expression régulière

  • Le , correspond à la virgule

  • Cela signifie que les caractères en blanc (espace, onglet, etc.) et * signifient 0 ou plus

  • Le $ à la fin signifie la fin de la chaîne

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

Long shot ici

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

Vous pouvez supprimer la dernière virgule d'une chaîne en utilisant la méthode slice (), trouvez l' exemple ci-dessous:

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

Le problème est que vous supprimez la dernière virgule dans la chaîne, pas la virgule si c'est la dernière chose dans la chaîne. Donc, vous devriez mettre un si pour vérifier si le dernier char est ',' et le changer si c'est le cas.

EDIT: Est-ce vraiment déroutant?

'Ceci, c'est une chaîne aléatoire'

Votre code trouve la dernière virgule à partir de la chaîne et ne stocke que 'Ceci', car la dernière virgule est après 'Ceci' n'est pas à la fin de la chaîne.