Pozdrowienia wszyscy ... Muszę . Ale chcę usunąć wszystkie powtarzające się spacje w samym ciągu, nie tylko na końcu lub na początku. Mógłbym to zrobić metodą:Trim
String
public static string ConvertWhitespacesToSingleSpaces(string value)
{
value = Regex.Replace(value, @"\s+", " ");
}
Które mam stąd . Ale chcę, aby ten fragment kodu był wywoływany w samym String.Trim()
sobie, więc myślę, że muszę rozszerzyć, przeciążyć lub zastąpić Trim
metodę ... Czy istnieje sposób, aby to zrobić?
Z góry dziękuję.
c#
string
extension-methods
trim
Girardi
źródło
źródło
Czy to możliwe? Tak, ale tylko z metodą rozszerzenia
Klasa
System.String
jest zapieczętowana, więc nie można używać zastępowania ani dziedziczenia.public static class MyStringExtensions { public static string ConvertWhitespacesToSingleSpaces(this string value) { return Regex.Replace(value, @"\s+", " "); } } // usage: string s = "test !"; s = s.ConvertWhitespacesToSingleSpaces();
źródło
String.Trim
.Twoje pytanie brzmi tak i nie.
Tak, możesz rozszerzyć istniejące typy przy użyciu metod rozszerzających. Metody rozszerzające mogą oczywiście uzyskiwać dostęp tylko do publicznego interfejsu tego typu.
public static string ConvertWhitespacesToSingleSpaces(this string value) {...} // some time later... "hello world".ConvertWhitespacesToSingleSpaces()
Nie, nie możesz wywołać tej metody
Trim()
. Metody rozszerzające nie uczestniczą w przeciążaniu. Myślę, że kompilator powinien nawet wyświetlić komunikat o błędzie zawierający szczegółowe informacje.Metody rozszerzające są widoczne tylko wtedy, gdy używana jest przestrzeń nazw zawierająca typ, który definiuje metodę.
źródło
Metody rozszerzające!
public static class MyExtensions { public static string ConvertWhitespacesToSingleSpaces(this string value) { return Regex.Replace(value, @"\s+", " "); } }
źródło
Oprócz stosowania metod rozszerzających - prawdopodobnie jest to dobry kandydat - możliwe jest również „zawijanie” obiektu (np. „Skład obiektu”). Tak długo, jak opakowany formularz zawiera nie więcej informacji niż opakowywany przedmiot, opakowany element może zostać przejęty przez niejawne lub jawne konwersje bez utraty informacji: po prostu zmiana typu / interfejsu.
Miłego kodowania.
źródło