Diacritics 3.3.14

.NET Standard 1.2 .NET Framework 4.5
Install-Package Diacritics -Version 3.3.14
dotnet add package Diacritics --version 3.3.14
<PackageReference Include="Diacritics" Version="3.3.14" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Diacritics --version 3.3.14
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Diacritics, 3.3.14"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Diacritics as a Cake Addin
#addin nuget:?package=Diacritics&version=3.3.14

// Install Diacritics as a Cake Tool
#tool nuget:?package=Diacritics&version=3.3.14
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Diacritics.NET

Version Downloads

Diacritics are used across many languages in order to change the sound-values of the letters to which they are added. In software development, diacritics often have to be replaced with non-diacritics, e.g. to improve usability of user input. Diacritics.NET is a basic mapper between diacritic characters an non-diacritic characters.

Download and Install Diacritics

This library is available on NuGet: https://www.nuget.org/packages/Diacritics/ Use the following command to install Diacritics using NuGet package manager console:

PM> Install-Package Diacritics

You can use this library in any .Net project which is compatible to PCL (e.g. Xamarin Android, iOS, Windows Phone, Windows Store, Universal Apps, etc.)

API Usage

Replace diacritic characters

The most common use case of this library is to find and replace diacritic characters in a given string. RemoveDiacritics is a string extension method which returns a diacritics-free string.

// Arrange
const string InputString = "Je veux aller à Saint-Étienne";

// Act
string removeDiacritics = InputString.RemoveDiacritics();

// Assert
removeDiacritics.Should().Be("Je veux aller a Saint-Etienne");

Find diacritic characters

The most common use case of this library is to detect and remove diacritic characters from a given string. If you just want to check whether a string contains diacritics, use the string extensions method HasDiacritics.

// Arrange
const string InputString = "Je veux aller à Saint-Étienne";

// Act
bool hasDiacritics = InputString.HasDiacritics();

// Assert
hasDiacritics.Should().BeTrue();

Using Diacritics with IoC

The example shown above uses extension methods which use a default implementation of IDiacriticsMapper, namely type DefaultDiacriticsMapper. If you're using an IoC container, you can register IDiacriticsMapper either with the provided DefaultDiacriticsMapper or with your own implementation of IDiacriticsMapper.

Add custom diactrics mappings

Diacritics is extensible. You can write your own language accent by implementing IAccentMapping (or AccentMapping base class). DiacriticsMapper accepts any IAccentMapping type at construction time. You are highly welcome to contribute to this library. Just create a fork, commit your changes and create a pull request.

TODO: Add/Remove methods for adding/removing accents at runtime.

Benchmark Tests

Tested Version<br> https://www.nuget.org/packages/Diacritics/2.1.19291.8-pre

Benchmark Environment<br> BenchmarkDotNet=v0.11.5, OS=Windows 10.0.17134.885 (1803/April2018Update/Redstone4) Intel Core i7-7600U CPU 2.80GHz (Kaby Lake), 1 CPU, 4 logical and 2 physical cores Frequency=2835933 Hz, Resolution=352.6176 ns, Timer=TSC .NET Core SDK=3.0.100 [Host] : .NET Core 2.2.4 (CoreCLR 4.6.27521.02, CoreFX 4.6.27521.01), 64bit RyuJIT ShortRun : .NET Core 2.2.4 (CoreCLR 4.6.27521.02, CoreFX 4.6.27521.01), 64bit RyuJIT

Job=ShortRun IterationCount=3 LaunchCount=1 WarmupCount=3

Benchmark Results

Method Mean Error StdDev
RemoveDiacritics (9 latin chars) 230.5 ns 476.2 ns 26.10 ns
RemoveDiacritics (23 diacritic chars) 651.5 ns 843.4 ns 46.23 ns
RemoveDiacritics (408 latin chars) 8,697.1 ns 9,938.1 ns 544.74 ns
RemoveDiacritics (729 diacritic chars) 15,045.0 ns 12,893.0 ns 706.71 ns

Legend<br> Mean : Arithmetic mean of all measurements<br> Error : Half of 99.9% confidence interval<br> StdDev : Standard deviation of all measurements<br> Rank : Relative position of current benchmark mean among all benchmarks (Arabic style)<br> 1 ns : 1 Nanosecond (0.000000001 sec)<br>

License

This project is Copyright © 2019 Thomas Galliker. Free for non-commercial use. For commercial use please contact the author.

Product Versions
.NET net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows
.NET Core netcoreapp1.0 netcoreapp1.1 netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1
.NET Standard netstandard1.2 netstandard1.3 netstandard1.4 netstandard1.5 netstandard1.6 netstandard2.0 netstandard2.1
.NET Framework net45 net451 net452 net46 net461 net462 net463 net47 net471 net472 net48
MonoAndroid monoandroid
MonoMac monomac
MonoTouch monotouch
Tizen tizen30 tizen40 tizen60
Universal Windows Platform uap uap10.0
Windows Phone wpa81
Windows Store netcore451
Xamarin.iOS xamarinios
Xamarin.Mac xamarinmac
Xamarin.TVOS xamarintvos
Xamarin.WatchOS xamarinwatchos
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.
  • .NETFramework 4.5

    • No dependencies.
  • .NETStandard 1.2

  • .NETStandard 2.0

    • No dependencies.
  • .NETStandard 2.1

    • No dependencies.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Diacritics:

Package Downloads
Dialogs

Chatbot dll

Stax.StringToUrl

Extension method to convert any string into a dash seperated string to be used for a URL. Eg: hello world is turned into hello-world. Non alpha numeric characters are stripped and diacritics are removed too.

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on Diacritics:

Repository Stars
jellyfin/jellyfin
The Free Software Media System
Version Downloads Last updated
3.3.14 13,005 4/27/2022
3.3.13-pre 59 4/17/2022
3.3.12-pre 50 4/17/2022
3.3.11-pre 1,133 1/9/2022
3.3.10 73,411 11/11/2021
3.3.9-pre 134 11/11/2021
3.3.8-pre 127 11/11/2021
3.3.7-pre 137 11/11/2021
3.3.6-pre 108 11/11/2021
3.3.4 25,895 10/7/2021
3.3.3-pre 148 10/7/2021
3.2.21207.2-pre 230 7/26/2021
3.1.20334.1-pre 4,781 11/29/2020
3.1.20333.3-pre 319 11/28/2020
3.0.20116.1-pre 2,793 4/25/2020
2.1.20116.2-pre 301 4/25/2020
2.1.20036.1 247,001 2/4/2020
2.1.20017.2-pre 343 1/17/2020
2.1.19293.1 55,659 10/20/2019
2.1.19292.2-pre 329 10/19/2019
2.1.19292.1-pre 337 10/19/2019
2.1.19291.8-pre 343 10/18/2019
2.1.19291.6-pre 338 10/18/2019
2.1.19286.1-pre 349 10/13/2019
2.1.19240.1-pre 374 8/28/2019
2.0.19240.3 20,200 8/28/2019
2.0.19240.2-pre 373 8/28/2019
2.0.19117.1-pre 595 4/27/2019
2.0.18316.1 81,767 11/12/2018
2.0.18311.1 690 11/7/2018
2.0.18308.2-pre 584 11/4/2018
2.0.18308.1-pre 618 11/4/2018
2.0.18282.1 2,319 10/9/2018
2.0.18281.2-pre 616 10/8/2018
2.0.18281.1-pre 625 10/8/2018
1.0.8-pre1 701 9/5/2018
1.0.7 49,298 6/13/2018
1.0.7-pre2 720 6/11/2018
1.0.7-pre1 695 6/11/2018
1.0.6 5,249 2/21/2018
1.0.5 2,505 6/8/2017
1.0.5-pre3 781 4/7/2017
1.0.5-pre2 748 4/7/2017
1.0.5-pre1 757 4/7/2017
1.0.4 10,728 3/24/2017
1.0.4-pre2 766 3/22/2017
1.0.4-pre1 855 12/13/2016
1.0.3 2,455 12/13/2016
1.0.3-pre3 821 12/13/2016
1.0.3-pre2 849 4/4/2016
1.0.3-pre1 817 4/4/2016
1.0.2 18,881 1/28/2016
1.0.1 926 12/16/2015
1.0.0 919 12/16/2015
1.0.0-pre1 909 12/16/2015

3.x
- New portuguese accents (masculine or
- Continuous improvement, new diacritics mappings
- Bug fixes and performance improvements

2.1.0
- Performance improvements in RemoveDiacritics
- New method StaticDiacritics.SetDefaultMapper to replace the default IDiacriticsMapper
- Add vietnamese mappings

2.0.0
- Refactoring to NetStandard + NET 4.5.2
- Several bug fixes + new diacritics added

1.0.8
- Add Turkish ı mapping to i

1.0.7
- Support for .Net Standard 1.0
- Add Icelandic ð mapping to o

1.0.6
- Add Spanish ñ mapping to n

1.0.5
- Add support for combined cedilla characters
- Fix German ß mapping to ss

1.0.4
- Add .Net 4.5 implementation as dedicated assembly
- Add missing accents mappings
- Bug fix: Russian accents mapping fixed

1.0.3
- Bug fix: RemoveDiacritics now also removes upper case diacritic characters
- Bug fix: Correct handling of first letter upper case characters

1.0.2
- Improved initialization performance by factor 8

1.0.1
- Added ArabicAccentsMapping
- Added BulgarianAccentsMapping
- Added CatalanAccentsMapping
- Added CroatianAccentsMapping
- Added CzechAccentsMapping
- Added DutchAccentsMapping
- Added EnglishAccentsMapping
- Added EstonianAccentsMapping
- Added FilipinoAccentsMapping
- Added FrenchAccentsMapping
- Added GermanAccentsMapping
- Added GreekAccentsMapping
- Added HungarianAccentsMapping
- Added IcelandicAccentsMapping
- Added ItalianAccentsMapping
- Added LatvianAccentsMapping
- Added PolishAccentsMapping
- Added PortugueseAccentsMapping
- Added RomanianAccentsMapping
- Added RussianAccentsMapping
- Added SlovakianAccentsMapping
- Added SpanishAccentsMapping
- Added TurkishAccentsMapping
- Added UkarainianAccentsMapping