I have been trying to make a method that does a "string cleaning process" and wanted to use it like one would use a simple string.Trim()
or string.Normalize()
.
Method
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;
}
And what I am looking for is a way to use this method in the following manner:
string example = "Some Random Text";
example = example.ToFriendlyDOSNameString();
For reference, I'm currently using this on a console application and this method is placed right under the "main method", I don't exactly know where I'd place a method for it to have the behavior I want it to have...
CodePudding user response:
Several things are missing from your extension method:
- The method needs to be
static
; - The
string
parameter should use thethis
keyword.
Example:
public static class MyExtensions
{
public static string ToFriendlyDosNameString(this string input)
{
// Your logic.
}
}
More information:
Extension Methods (C# Programming Guide)
CodePudding user response:
public static class Utilities {
public static string ToFriendlyDOSName(this string str) {
str = "new friendly value";
// modify the value according to your logic
return str;
}
}
then you can use it like you mentioned
string myName = "unfriendly name";
myName.ToFriendlyDOSName();