CaseDotNet.Extensions
0.2.46
dotnet add package CaseDotNet.Extensions --version 0.2.46
NuGet\Install-Package CaseDotNet.Extensions -Version 0.2.46
<PackageReference Include="CaseDotNet.Extensions" Version="0.2.46" />
paket add CaseDotNet.Extensions --version 0.2.46
#r "nuget: CaseDotNet.Extensions, 0.2.46"
// Install CaseDotNet.Extensions as a Cake Addin #addin nuget:?package=CaseDotNet.Extensions&version=0.2.46 // Install CaseDotNet.Extensions as a Cake Tool #tool nuget:?package=CaseDotNet.Extensions&version=0.2.46
String manipulation library built with intention to make naming conventions conversion easy
Motivation
Suddenly, suffering from urgent need of easy and performant way to convert strings from arbitrary naming convention
to camelCase
, I went out searching around NuGet and found out that there are not many options available in .NET (actually one),
which would be public, and not part of some parent project.
I see that as a huge overlook, considering amount of such packages for other languages (JS, for example), so I decided
it would be quite useful to write something which will be reliable and extensible, so here it is.
Note that library is still in development and is lacking some planned functionality (see TODO) or may contain bugs, feel free to report them in the issues section
Features
- Built-in support for all common naming conventions:
camelCase
PascalCase
snake_case
kebab-case
- See supported conventions for full list
- Easily extensible:
- Modular design - combine different types of parsers, word emitters, concatenators, etc. to build the converter you need
- Modules are dead simple to implement
- Performant:
- Default modules' implementation aims to be as much GC-friendly as possible
- No
Regex
usage, tokenization done by simple condition-based lexers choosing leftmost overlapped sequence (smallest possible token size is chosen)
- Zero dependencies:
- Keeping your application size as low as possible by avoiding third party library bloat
- Portable:
- Targets NetStandard2.0, allowing references from .NET Core 2.0 or greater and .NET Framework 4.6.1 or greater
- Targets NetStandard2.1, allowing references from .NET Core 3.0 or greater
Warning
Default Case.NET.Parsing.Parser
implementation is not thread-safe in netstandard2.0
build while it is in netstandard2.1
.
Thus it's recommended to have a Parser
instance for each thread, if your project is targeting .NET Framework, or .NET Core 2.0-2.2
For the same reason Parser.Universal
is a property, returning new instance every call in netstandard2.0
, while it is a static field in netstandard2.1
Usage
NuGet package is listed under name of
CaseDotNet
sinceCase.NET
was reserved
Installation
Install-Package CaseDotNet -Version 0.3.0
Include namespace
using Case.NET
Using built-in converters
Class Case.NET.CaseConverter
contains static fields with built-in converters under corresponding names:
static void Main(string[] args) {
CasedString converted = CaseConverter.CamelCase.ConvertCase("not_camel_case");
Console.WriteLine((string)converted); // notCamelCase
}
Currently supported conventions (as target)
camelCase
PascalCase
snake_case
CONSTANT_CASE
kebab-case
Train-Case
TODO
Target conventions to support
-
Capital Case
-
dot.case
-
Namespace.Case
-
no case
-
path/case
(With optional backslash\
as delimiter) -
Sentence case
-
Title Case
- Swap case (Change case of every character)
Swap Case
→sWAP cASE
-
FeNcE CaSe
-
SPonGE CasE
-
reVERse spONge cASe
-
RanDOM CAse
Misc
- Improve unit test coverage
- Better build/release flow on CI
- Docs
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- CaseDotNet (>= 0.3.36)
-
.NETStandard 2.1
- CaseDotNet (>= 0.3.36)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on CaseDotNet.Extensions:
Package | Downloads |
---|---|
SunamoDevCode
Another code mainly for working with C# in all ways. Will be in future merged with SunamoCode and SunamoCSharp. |
GitHub repositories
This package is not used by any popular GitHub repositories.
See README.md for full info