J'ai une corde dire
"Hello! world!"
Je veux faire une assiette ou un retrait pour enlever le! hors du monde mais pas hors bonjour.
"Hello! world!".TrimEnd('!');
MODIFIER:
Ce que j'ai remarqué dans ce type de questions, c'est que tout le monde suggère de supprimer le dernier caractère d'une chaîne donnée. Mais cela ne correspond pas à la définition de la méthode Trim.
Couper - Supprime toutes les occurrences de Caractères blancs du début et fin de cette instance.
Sous cette définition, ne supprimer que 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 ceci
Exemple comme méthode d'extension:
public static class MyExtensions
{
public static string TrimLastCharacter(this String str)
{
if(String.IsNullOrEmpty(str)){
return str;
} else {
return str.TrimEnd(str[str.Length - 1]);
}
}
}
Note si vous voulez supprimer tous les caractères de même valeur, c'est-à-dire (!!!!), la méthode ci-dessus supprime toutes les existences de '!' à partir de la fin de la chaîne, mais si vous souhaitez supprimer uniquement le dernier caractère, vous devez utiliser ceci:
else { return str.Remove(str.Length - 1); }
String withoutLast = yourString.Substring(0,(yourString.Length - 1));
if (yourString.Length > 1)
withoutLast = yourString.Substring(0, yourString.Length - 1);
ou
if (yourString.Length > 1)
withoutLast = yourString.TrimEnd().Substring(0, yourString.Length - 1);
... au cas où vous voudriez supprimer un caractère non-blanc de la fin.
string s1 = "Hello! world!";
string s2 = s1.Trim('!');
string helloOriginal = "Hello! World!";
string newString = helloOriginal.Substring(0,helloOriginal.LastIndexOf('!'));
Autre exemple de suppression du dernier caractère à partir d'une chaîne:
string outputText = inputText.Remove(inputText.Length - 1, 1);
Vous pouvez le mettre dans une méthode d'extension et l'empêcher de chaîne nulle, etc.
string s1 = "Hello! world!"
string s2 = s1.Substring(0, s1.Length - 1);
Console.WriteLine(s1);
Console.WriteLine(s2);
Essaye ça:
return( (str).Remove(str.Length-1) );
vous pouvez aussi utiliser ceci:
public static class Extensions
{
public static string RemovePrefix(this string o, string prefix)
{
if (prefix == null) return o;
return !o.StartsWith(prefix) ? o : o.Remove(0, prefix.Length);
}
public static string RemoveSuffix(this string o, string suffix)
{
if(suffix == null) return o;
return !o.EndsWith(suffix) ? o : o.Remove(o.Length - suffix.Length, suffix.Length);
}
}
Version légèrement modifiée de @Damian Leszczyński - Vash qui garantira que seul un caractère spécifique sera supprimé.
public static class StringExtensions
{
public static string TrimLastCharacter(this string str, char character)
{
if (string.IsNullOrEmpty(str) || str[str.Length - 1] != character)
{
return str;
}
return str.Substring(0, str.Length - 1);
}
}
J'ai pris le chemin de l'écriture d'une extension en utilisant le TrimEnd simplement parce que je l'utilisais déjà en ligne et que j'en étais content.
static class Extensions
{
public static string RemoveLastChars(this String text, string 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 static; P et utilisation est:
string _ManagedLocationsOLAP = string.Empty;
_ManagedLocationsOLAP = _validManagedLocationIDs.RemoveLastChars(",");
Très facile et simple:
str = str.Remove (str.Length - 1);
Un exemple de classe d'extension pour simplifier ceci: -
internal static class String
{
public static string TrimEndsCharacter(this string target, char character) => target?.TrimLeadingCharacter(character).TrimTrailingCharacter(character);
public static string TrimLeadingCharacter(this string target, char character) => Match(target?.Substring(0, 1), character) ? target.Remove(0,1) : target;
public static string TrimTrailingCharacter(this string target, char character) => Match(target?.Substring(target.Length - 1, 1), character) ? target.Substring(0, target.Length - 1) : target;
private static bool Match(string value, char character) => !string.IsNullOrEmpty(value) && value[0] == character;
}
Usage
"!Something!".TrimLeadingCharacter('X'); // Result '!Something!' (No Change)
"!Something!".TrimTrailingCharacter('S'); // Result '!Something!' (No Change)
"!Something!".TrimEndsCharacter('g'); // Result '!Something!' (No Change)
"!Something!".TrimLeadingCharacter('!'); // Result 'Something!' (1st Character removed)
"!Something!".TrimTrailingCharacter('!'); // Result '!Something' (Last Character removed)
"!Something!".TrimEndsCharacter('!'); // Result 'Something' (End Characters removed)
"!!Something!!".TrimLeadingCharacter('!'); // Result '!Something!!' (Only 1st instance removed)
"!!Something!!".TrimTrailingCharacter('!'); // Result '!!Something!' (Only Last instance removed)
"!!Something!!".TrimEndsCharacter('!'); // Result '!Something!' (Only End instances removed)