Salutations à tous ... J'ai besoin de Trim
a String
. Mais je veux supprimer tous les espaces vides répétés dans la chaîne elle-même, pas seulement à la fin ou au début de celle-ci. Je pourrais le faire avec une méthode comme:
public static string ConvertWhitespacesToSingleSpaces(string value)
{
value = Regex.Replace(value, @"\s+", " ");
}
Ce que j'ai obtenu de ici . Mais je veux que ce morceau de code soit appelé dans la String.Trim()
elle-même, alors je pense que je dois étendre, surcharger ou surcharger la méthode Trim
... Y a-t-il un moyen de le faire ?
Merci d'avance.
Puisque vous ne pouvez pas étendre string.Trim (). Vous pouvez créer une méthode d'extension telle que décrite ici qui limite et réduit les espaces.
namespace CustomExtensions
{
//Extension methods must be defined in a static class
public static class StringExtension
{
// This is the extension method.
// The first parameter takes the "this" modifier
// and specifies the type for which the method is defined.
public static string TrimAndReduce(this string str)
{
return ConvertWhitespacesToSingleSpaces(str).Trim();
}
public static string ConvertWhitespacesToSingleSpaces(this string value)
{
return Regex.Replace(value, @"\s+", " ");
}
}
}
Vous pouvez l'utiliser comme ça
using CustomExtensions;
string text = " I'm wearing the cheese. It isn't wearing me! ";
text = text.TrimAndReduce();
Vous donne
text = "I'm wearing the cheese. It isn't wearing me!";
C'est possible? Oui, mais seulement avec une méthode d'extension
La classe System.String
est scellé afin que vous ne puissiez pas utiliser la priorité ou l'héritage.
public static class MyStringExtensions
{
public static string ConvertWhitespacesToSingleSpaces(this string value)
{
return Regex.Replace(value, @"\s+", " ");
}
}
// usage:
string s = "test !";
s = s.ConvertWhitespacesToSingleSpaces();
Il y a un oui et un non à votre question.
Oui, vous pouvez étendre des types existants à l'aide de méthodes d'extension. Les méthodes d'extension ne peuvent naturellement accéder qu'à l'interface publique du type.
public static string ConvertWhitespacesToSingleSpaces(this string value) {...}
// some time later...
"hello world".ConvertWhitespacesToSingleSpaces()
Non, vous ne pouvez pas appeler cette méthode Trim (). Les méthodes d'extension ne participent pas à la surcharge. Je pense qu'un compilateur devrait même vous donner un message d'erreur détaillant cela.
Les méthodes d'extension ne sont visibles que si l'espace de noms contenant le type définissant la méthode est utilisé.
public static class MyExtensions
{
public static string ConvertWhitespacesToSingleSpaces(this string value)
{
return Regex.Replace(value, @"\s+", " ");
}
}
Outre l'utilisation de méthodes d'extension - probablement un bon candidat ici -, il est également possible "d'emballer" un objet (par exemple, "composition d'objet"). Tant que le formulaire encapsulé ne contient pas plus d'informations que l'élément encapsulé, l'élément encapsulé peut être passé proprement par le biais de conversions implicites ou explicites sans perte d'information: il suffit d'un changement de type/d'interface.
Bonne codage.