Couper le dernier caractère d’une chaîne

J’ai une ficelle dire

"Hello! world!" 

Je veux faire un ajustement ou un retrait pour sortir le! hors du monde mais pas off Bonjour

 "Hello! world!".TrimEnd('!'); 

Lire la suite

MODIFIER:

Ce que j’ai remarqué dans ce type de questions suggère à tout le monde de supprimer le dernier caractère de la chaîne donnée. Mais cela ne correspond pas à la définition de la méthode Trim.

Ajuster – Supprime toutes les occurrences de caractères d’espacement blanc du début et de la fin de cette instance.

MSDN-Trim

Sous cette définition, supprimer uniquement le dernier caractère de la chaîne est une mauvaise solution.

Donc, si nous voulons “couper le dernier caractère de la chaîne”, nous devrions faire quelque chose comme ça

Exemple comme méthode d’extension:

 public static class MyExtensions { public static ssortingng TrimLastCharacter(this Ssortingng str) { if(Ssortingng.IsNullOrEmpty(str)){ return str; } else { return str.TrimEnd(str[str.Length - 1]); } } } 

Notez que si vous voulez supprimer tous les caractères de la même valeur, par exemple (!!!!), la méthode ci-dessus supprime toutes les existences de ‘!’ à partir de la fin de la chaîne, mais si vous ne souhaitez supprimer que le dernier caractère, vous devez utiliser ceci:

 else { return str.Remove(str.Length - 1); } 
 Ssortingng withoutLast = yourSsortingng.Subssortingng(0,(yourSsortingng.Length - 1)); 
 if (yourSsortingng.Length > 1) withoutLast = yourSsortingng.Subssortingng(0, yourSsortingng.Length - 1); 

ou

 if (yourSsortingng.Length > 1) withoutLast = yourSsortingng.TrimEnd().Subssortingng(0, yourSsortingng.Length - 1); 

… au cas où vous voudriez supprimer un caractère non blanc à la fin.

 ssortingng helloOriginal = "Hello! World!"; ssortingng newSsortingng = helloOriginal.Subssortingng(0,helloOriginal.LastIndexOf('!')); 
  ssortingng s1 = "Hello! world!"; ssortingng s2 = s1.Trim('!'); 

L’autre exemple de réduction du dernier caractère d’une chaîne:

 ssortingng outputText = inputText.Remove(inputText.Length - 1, 1); 

Vous pouvez le mettre dans une méthode d’extension et l’empêcher de créer une chaîne vide, etc.

 ssortingng s1 = "Hello! world!" ssortingng s2 = s1.Subssortingng(0, s1.Length - 1); Console.WriteLine(s1); Console.WriteLine(s2); 

vous pourriez aussi utiliser ceci:

 public static class Extensions { public static ssortingng RemovePrefix(this ssortingng o, ssortingng prefix) { if (prefix == null) return o; return !o.StartsWith(prefix) ? o : o.Remove(0, prefix.Length); } public static ssortingng RemoveSuffix(this ssortingng o, ssortingng suffix) { if(suffix == null) return o; return !o.EndsWith(suffix) ? o : o.Remove(o.Length - suffix.Length, suffix.Length); } } 

Essaye ça:

 return( (str).Remove(str.Length-1) ); 

J’ai pris le chemin de l’écriture d’une extension en utilisant le TrimEnd juste parce que je l’utilisais déjà en ligne et que j’étais satisfait de cela … à savoir:

 static class Extensions { public static ssortingng RemoveLastChars(this Ssortingng text, ssortingng suffix) { char[] trailingChars = suffix.ToCharArray(); if (suffix == null) return text; return text.TrimEnd(trailingChars); } } 

Assurez-vous d’inclure l’espace de noms dans vos classes à l’aide de la classe statique, P et son utilisation sont les suivantes:

 ssortingng _ManagedLocationsOLAP = ssortingng.Empty; _ManagedLocationsOLAP = _validManagedLocationIDs.RemoveLastChars(","); 

Très facile et simple:

str = str.Remove (str.Length – 1)

Si vous voulez supprimer le ‘!’ caractère d’une expression spécifique (“monde” dans votre cas), alors vous pouvez utiliser cette expression régulière

 ssortingng input = "Hello! world!"; ssortingng output = Regex.Replace(input, "(world)!", "$1", RegexOptions.Multiline | RegexOptions.Singleline); // result: "Hello! world" 

le caractère spécial $ 1 contient toutes les expressions “monde” correspondantes, et il est utilisé pour remplacer le “monde”! expression