#c#
Вопрос:
Я пытался создать метод, который выполняет «процесс очистки строк», и хотел использовать его так, как можно было бы использовать простое string.Trim()
или string.Normalize()
.
Метод
public string ToFriendlyDOSNameString(string input)
{
Regex whitespaces = new Regex(".*?([ ]{2,})");
input = input.Normalize().Replace("\", " ").Replace("/", " ").Replace(""", " ")
.Replace("*", " ").Replace(":", " ").Replace("?", " ")
.Replace("<", " ").Replace(">", " ").Replace("|", " ")
.Replace("!", " ").Replace(".", " ").Replace("'", " ").Trim();
string clone = input;
foreach (Match match in whitespaces.Matches(input))
{
clone = clone.Replace(match.Groups[1].Value, " ");
}
input = clone;
return input;
}
И то, что я ищу, — это способ использовать этот метод следующим образом:
string example = "Some Random Text";
example = example.ToFriendlyDOSNameString();
Для справки, в настоящее время я использую это в консольном приложении, и этот метод находится прямо под «основным методом», я точно не знаю, где бы я разместил метод, чтобы он вел себя так, как я хочу…
Ответ №1:
В вашем методе расширения отсутствует несколько вещей:
- Метод должен быть
static
; - В
string
параметре должно использоватьсяthis
ключевое слово.
Пример:
public static class StringExtensions
{
public static string ToFriendlyDosNameString(this string input)
{
// Your logic.
}
}
Дополнительная информация:
Ответ №2:
public static class Utilities {
public static string ToFriendlyDOSName(this string str) {
str = "new friendly value";
// modify the value according to your logic
return str;
}
}
тогда вы можете использовать его, как вы упомянули
string myName = "unfriendly name";
myName.ToFriendlyDOSName();