J'ai des ficelles comme ci-dessous
2,44,AAA,BBB,1,0,,,
Alors maintenant, je veux supprimer uniquement la dernière virgule dans la chaîne ci-dessus. Donc, je veux une sortie en tant que
2,44,AAA,BBB,1,0,,
J'ai décidé d'utiliser TrimeEnd comme ci-dessous
str.ToString.TrimEnd(',')
Mais il a supprimé toutes les virgules après 0. Donc, je reçois la sortie ci-dessous
2,44,AAA,BBB,1,0
Pourquoi supprime-t-il les 3 virgules après 0? J'ai juste besoin de supprimer le dernier caractère de la chaîne
Pourquoi supprime-t-il les 3 virgules après 0?
Parce que c'est ce que documenté faire:
Valeur de retour:
La chaîne qui reste après toutes les occurrences des caractères du paramètretrimChars
est supprimée de la fin de la chaîne en cours.
Si vous souhaitez uniquement supprimer le dernier caractère, vous pouvez utiliser:
if (str.EndsWith(","))
{
str = str.Substring(0, str.Length - 1);
}
Ou équivalent:
if (str.EndsWith(","))
{
str = str.Remove(str.Length - 1);
}
C'est prévu. String.TrimEnd
Supprime all les dernières occurrences d'un ensemble de caractères spécifié dans un tableau à partir de l'objet String actuel
La méthode TrimEnd(char[] trimChars)
supprime de la chaîne actuelle tous les caractères de fin figurant dans le paramètre trimChars
. L'opération de trim s'arrête lorsque le premier caractère qui n'est pas dans trimChars
est rencontré à la fin de la chaîne
Utilisez ceci à la place:
str = str.EndsWith(",") ? str.Substring(0, str.Length - 1) : str;
Vous pouvez utiliser ceci:
string s = "2,44,AAA,BBB,1,0,,,";
s = s.Remove(s.Length-1, 1);
Rappelez-vous s'il vous plaît, le TrimEnd () n'est pas une fonction inplace. Vous devez réaffecter son résultat à str
:
str = str.TrimEnd(',')