163 votes

Supprime les trois derniers caractères d'une chaîne de caractères

Je veux supprimer les trois derniers caractères d'une chaîne de caractères :

string myString = "abcdxxx"; 

Notez que la chaîne de caractères est une donnée dynamique.

307voto

Adil Points 80031

lire les 3 derniers caractères d'une chaîne de caractères [Question posée au départ].

Vous pouvez utiliser chaîne.sous-chaîne et donnez-lui l'indice de départ et il obtiendra la sous-chaîne à partir de l'indice donné jusqu'à la fin.

myString.Substring(myString.Length-3)

Récupère une sous-chaîne de cette instance. La sous-chaîne commence à un position de caractère spécifiée. MSDN

Editar pour le poste mis à jour

Supprimer les 3 derniers caractères d'une chaîne de caractères [Question mise à jour].

Pour supprimer les trois derniers caractères de la chaîne, vous pouvez utiliser string.Substring(Int32, Int32) et lui donner l'indice de départ 0 et l'indice final trois de moins que la longueur de la chaîne . Il obtiendra la sous-chaîne avant les trois derniers caractères.

myString = myString.Substring(0, myString.Length-3);

Méthode String.Substring (Int32, Int32)

Récupère une sous-chaîne de cette instance. La sous-chaîne commence à un position de caractère spécifiée et a une longueur spécifiée.

Vous pouvez également utiliser String.Remove(Int32) pour enlever les trois derniers caractères en passant l'index de départ comme longueur - 3 il supprimera de ce point jusqu'à la fin de la chaîne.

myString = myString.Remove(myString.Length-3)

Méthode String.Remove (Int32)

Renvoie une nouvelle chaîne dans laquelle tous les caractères de l'instance actuelle courante, en commençant à une position spécifiée et en continuant jusqu'à la dernière position, ont été supprimés

29voto

voo Points 3505
myString = myString.Remove(myString.Length - 3, 3);

18voto

Byron Katz Points 31

Je les ai tous lus, mais je voulais quelque chose d'un peu plus élégant. Juste pour enlever un certain nombre de caractères de la fin d'une chaîne :

string.Concat("hello".Reverse().Skip(3).Reverse());

sortie :

"he"

13voto

vullnetyy Points 570

Le nouvel opérateur de plage de C# 8.0 peut être un excellent raccourci pour y parvenir.

Exemple n°1 (pour répondre à la question) :

string myString = "abcdxxx";
var shortenedString = myString[0..^3]
System.Console.WriteLine(shortenedString);
// Results: abcd

Exemple n° 2 (pour vous montrer à quel point les opérateurs de gamme sont géniaux) :

string s = "FooBar99";
// If the last 2 characters of the string are 99 then change to 98
s = s[^2..] == "99" ? s[0..^2] + "98" : s;
System.Console.WriteLine(s);
// Results: FooBar98

12voto

Adeel Points 9888
myString.Remove(myString.Length-3);

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