Caseless
Change string comparisons to be case insensitive.
Install / Use
/learn @Fody/CaselessREADME
<img src="/package_icon.png" height="30px"> Caseless.Fody
Change string comparisons to be case insensitive.
See Milestones for release notes.
This is an add-in for Fody
It is expected that all developers using Fody become a Patron on OpenCollective. See Licensing/Patron FAQ for more information.
Usage
See also Fody usage.
NuGet installation
Install the Caseless.Fody NuGet package and update the Fody NuGet package:
PM> Install-Package Fody
PM> Install-Package Caseless.Fody
The Install-Package Fody is required since NuGet always defaults to the oldest, and most buggy, version of any dependency.
Add to FodyWeavers.xml
Add <Caseless/> to FodyWeavers.xml
<Weavers>
<Caseless/>
</Weavers>
Your Code
public bool Foo()
{
var x = "a";
var y = "A";
return x == y;
}
What gets compiled
public bool Foo()
{
var x = "a";
var y = "A";
return string.Equals(x, y, StringComparison.OrdinalIgnoreCase);
}
Converted Methods
The following string methods get converted to their StringComparison equivalents.
Equalityhttp://msdn.microsoft.com/en-us/library/system.string.op_equalityInequalityhttp://msdn.microsoft.com/en-us/library/system.string.op_inequalityEquals(String)http://msdn.microsoft.com/en-us/library/858x0yyxEquals(String, String)http://msdn.microsoft.com/en-us/library/1hkt4325Compare(String,String)http://msdn.microsoft.com/en-us/library/84787k22CompareTo(String)http://msdn.microsoft.com/en-us/library/35f0x18wEndsWith(String)http://msdn.microsoft.com/en-us/library/2333wewzContains(String)http://msdn.microsoft.com/en-us/library/dy85x1saIndexOf(String)http://msdn.microsoft.com/en-us/library/k8b1470sIndexOf(String, Int)http://msdn.microsoft.com/en-us/library/7cct0x33IndexOf(String, Int, Int)http://msdn.microsoft.com/en-us/library/d93tkzahLastIndexOf(String)http://msdn.microsoft.com/en-us/library/1wdsy8fyLastIndexOf(String, Int)http://msdn.microsoft.com/en-us/library/bc3z4t9dLastIndexOf(String, Int, Int)http://msdn.microsoft.com/en-us/library/d0z3tk9tStartsWith(String)http://msdn.microsoft.com/en-us/library/baketfxw
What about String.Replace
This is because there is no overload for a case insensitive replace in the .net framework.
Here is an extension method to achieve it manually. Taken from this StackOverflow answer
public static class StringExtensions
{
public static StringComparison DefaultComparison = StringComparison.OrdinalIgnoreCase;
public static string ReplaceCaseless(this string str, string oldValue, string newValue)
{
var sb = new StringBuilder();
var previousIndex = 0;
var index = str.IndexOf(oldValue, DefaultComparison);
while (index != -1)
{
sb.Append(str.Substring(previousIndex, index - previousIndex));
sb.Append(newValue);
index += oldValue.Length;
previousIndex = index;
index = str.IndexOf(oldValue, index, DefaultComparison);
}
sb.Append(str.Substring(previousIndex));
return sb.ToString();
}
}
Default String Comparison
The default string comparison can be configured in the FodyWeavers.xml file.
For example to use StringComparison.InvariantCultureIgnoreCase add the following to FodyWeavers.xml.
<Weavers>
<Caseless StringComparison="InvariantCultureIgnoreCase"/>
</Weavers>
Icon
<a href="https://thenounproject.com/noun/aardvark/#icon-No6982">Aardvark</a> designed by <a href="https://thenounproject.com/nmac">N J MacNeil</a> from The Noun Project.
Related Skills
node-connect
350.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
350.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
350.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
