Reputation: 28101
I know precisely zilch about regular expressions and figured this was as good an opportunity as any to learn at least the most basic of basics.
How do I do this case-insensitive string replacement in C# using a regular expression?
myString.Replace("/kg", "").Replace("/KG", "");
(Note that the '/' is a literal.)
Upvotes: 35
Views: 36635
Reputation: 1499780
You can use:
myString = Regex.Replace(myString, "/kg", "", RegexOptions.IgnoreCase);
If you're going to do this a lot of times, you could do:
// You can reuse this object
Regex regex = new Regex("/kg", RegexOptions.IgnoreCase);
myString = regex.Replace(myString, "");
Using (?i:/kg)
would make just that bit of a larger regular expression case insensitive - personally I prefer to use RegexOptions
to make an option affect the whole pattern.
MSDN has pretty reasonable documentation of .NET regular expressions.
Upvotes: 83
Reputation: 700182
Like this:
myString = Regex.Replace(myString, "/[Kk][Gg]", String.Empty);
Note that it will also handle the combinations /kG and /Kg, so it does more than your string replacement example.
If you only want to handle the specific combinations /kg and /KG:
myString = Regex.Replace(myString, "/(?:kg|KG)", String.Empty);
Upvotes: 6
Reputation: 12396
Regex regex = new Regex(@"/kg", RegexOptions.IgnoreCase );
regex.Replace(input, "");
Upvotes: 0
Reputation: 8347
"/[kK][gG]" or "(?i:/kg)" will match for you.
declare a new regex object, passing in one of those as your contents. Then run regex.replace.
Upvotes: 2
Reputation: 171734
It depends what you want to achieve. I assume you want to remove a sequence of characters after a slash?
string replaced = Regex.Replace(input,"/[a-zA-Z]+","");
or
string replaced = Regex.Replace(input,"/[a-z]+","",RegexOptions.IgnoreCase);
Upvotes: 0