196 votes

Suppression de la dernière virgule d'une chaîne de caractères

En utilisant JavaScript, comment puis-je supprimer la dernière virgule, mais uniquement si la virgule est le dernier caractère ou s'il n'y a qu'un espace blanc après la virgule ? Voici mon code. J'ai obtenu un fonctionnement violon . Mais il y 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;
}

3voto

Deepu Reghunath Points 1509

Enlever la dernière virgule. Exemple de travail

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>

3voto

Tout d'abord, il faut vérifier si le dernier caractère est une virgule. Si elle existe, il faut la supprimer.

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

NOTE str.indexOf(',', this.length - ','.length) peut être simplifié en str.indexOf(',', this.length - 1)

2voto

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

2voto

Vous pouvez enlever la dernière virgule :

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

1voto

Wiktor Stribiżew Points 100073

Pour supprimer la dernière virgule d'une chaîne de caractères, il faut

text.replace(/,(?=[^,]*$)/, '')
text.replace(/,(?![^,]*,)/, '')

Voir le Démonstration de regex . Détails :

  • ,(?=[^,]*$) - une virgule qui est immédiatement suivie de zéro ou plusieurs caractères autres qu'une virgule jusqu'à la fin de la chaîne.
  • ,(?![^,]*,) - une virgule qui n'est pas immédiatement suivie de zéro ou plus caractères autres qu'une virgule, puis d'une autre virgule.

Voir la démo JavaScript :

const text = '1,This is a test, and this is another,  ...';
console.log(text.replace(/,(?=[^,]*$)/, ''));
console.log(text.replace(/,(?![^,]*,)/, ''));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X