Привет всем ... Мне нужен Trim
a String
. Но я хочу удалить все повторяющиеся пробелы в самой строке, а не только в конце или в начале ее. Я мог бы сделать это с помощью такого метода:
public static string ConvertWhitespacesToSingleSpaces(string value)
{
value = Regex.Replace(value, @"\s+", " ");
}
Который я получил отсюда . Но я хочу, чтобы этот фрагмент кода вызывался внутри самого String.Trim()
себя, поэтому я думаю, что мне нужно расширить, перегрузить или переопределить Trim
метод ... Есть ли способ сделать это?
Заранее спасибо.
c#
string
extension-methods
trim
Жирарди
источник
источник
Является ли это возможным? Да, но только с методом расширения
Класс
System.String
запечатан, поэтому вы не можете использовать переопределение или наследование.public static class MyStringExtensions { public static string ConvertWhitespacesToSingleSpaces(this string value) { return Regex.Replace(value, @"\s+", " "); } } // usage: string s = "test !"; s = s.ConvertWhitespacesToSingleSpaces();
источник
String.Trim
.На ваш вопрос есть да и нет.
Да, вы можете расширить существующие типы с помощью методов расширения. Методы расширения, естественно, могут обращаться только к общедоступному интерфейсу типа.
public static string ConvertWhitespacesToSingleSpaces(this string value) {...} // some time later... "hello world".ConvertWhitespacesToSingleSpaces()
Нет, вы не можете вызвать этот метод
Trim()
. Методы расширения не участвуют в перегрузке. Я думаю, что компилятор должен даже выдавать вам сообщение об ошибке с подробным описанием этого.Методы расширения видны только в том случае, если пространство имен, содержащее тип, определяющий метод, использует'ed.
источник
Способы расширения!
public static class MyExtensions { public static string ConvertWhitespacesToSingleSpaces(this string value) { return Regex.Replace(value, @"\s+", " "); } }
источник
Помимо использования методов расширения - вероятно, здесь хороший кандидат - также можно «обернуть» объект (например, «составить объект»). Пока обернутая форма содержит не больше информации, чем оборачиваемая вещь, обернутый элемент может быть чисто пропущен через неявные или явные преобразования без потери информации: просто изменение типа / интерфейса.
Удачного кодирования.
источник