Initial population
This commit is contained in:
376
JRCookbookBusiness/clsDiacriticRemover.cs
Normal file
376
JRCookbookBusiness/clsDiacriticRemover.cs
Normal file
@@ -0,0 +1,376 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace JRCookbookBusiness
|
||||
{
|
||||
public static class clsDiacriticRemover
|
||||
{
|
||||
private static Char[] mc_Convert;
|
||||
|
||||
/// <summary>
|
||||
/// This function is ultra fast because it uses a lookup table.
|
||||
/// This function does not depend on Windows functionality. It also works on Linux.
|
||||
/// This function removes all diacritics, accents, etc.
|
||||
/// For example "Crème Brûlée mit Soße" is converted to "Creme Brulee mit Sosse".
|
||||
/// </summary>
|
||||
public static String RemoveDiacritics(String s_Text)
|
||||
{
|
||||
StringBuilder i_Out = new StringBuilder(s_Text.Length);
|
||||
foreach (Char c_Char in s_Text)
|
||||
{
|
||||
/* This switch statement is optional!
|
||||
switch (c_Char)
|
||||
{
|
||||
// If you like you can add your own conversions, like here for German.
|
||||
// Otherwise remove this switch and 'ä' will be translated to 'a', etc.
|
||||
case 'ä': i_Out.Append("ae"); continue;
|
||||
case 'ö': i_Out.Append("oe"); continue;
|
||||
case 'ü': i_Out.Append("ue"); continue;
|
||||
case 'Ä': i_Out.Append("Ae"); continue;
|
||||
case 'Ö': i_Out.Append("Oe"); continue;
|
||||
case 'Ü': i_Out.Append("Ue"); continue;
|
||||
case 'ß': i_Out.Append("ss"); continue;
|
||||
} */
|
||||
|
||||
if (c_Char < mc_Convert.Length)
|
||||
i_Out.Append(mc_Convert[c_Char]);
|
||||
else
|
||||
i_Out.Append(c_Char);
|
||||
}
|
||||
return i_Out.ToString();
|
||||
}
|
||||
|
||||
// static constructor
|
||||
// See https://www.compart.com/en/unicode/U+0180
|
||||
static clsDiacriticRemover()
|
||||
{
|
||||
mc_Convert = new Char[0x270];
|
||||
|
||||
// Fill char array with translation of each character to itself
|
||||
for (int i = 0; i < 0x270; i++)
|
||||
{
|
||||
mc_Convert[i] = (Char)i;
|
||||
}
|
||||
|
||||
// Store the replacements for 310 special characters
|
||||
#region Fill mc_Convert
|
||||
|
||||
mc_Convert[0x0C0] = 'A'; // À
|
||||
mc_Convert[0x0C1] = 'A'; // Á
|
||||
mc_Convert[0x0C2] = 'A'; // Â
|
||||
mc_Convert[0x0C3] = 'A'; // Ã
|
||||
mc_Convert[0x0C4] = 'A'; // Ä
|
||||
mc_Convert[0x0C5] = 'A'; // Å
|
||||
mc_Convert[0x0C6] = 'A'; // Æ
|
||||
mc_Convert[0x0C7] = 'C'; // Ç
|
||||
mc_Convert[0x0C8] = 'E'; // È
|
||||
mc_Convert[0x0C9] = 'E'; // É
|
||||
mc_Convert[0x0CA] = 'E'; // Ê
|
||||
mc_Convert[0x0CB] = 'E'; // Ë
|
||||
mc_Convert[0x0CC] = 'I'; // Ì
|
||||
mc_Convert[0x0CD] = 'I'; // Í
|
||||
mc_Convert[0x0CE] = 'I'; // Î
|
||||
mc_Convert[0x0CF] = 'I'; // Ï
|
||||
mc_Convert[0x0D0] = 'D'; // Ð
|
||||
mc_Convert[0x0D1] = 'N'; // Ñ
|
||||
mc_Convert[0x0D2] = 'O'; // Ò
|
||||
mc_Convert[0x0D3] = 'O'; // Ó
|
||||
mc_Convert[0x0D4] = 'O'; // Ô
|
||||
mc_Convert[0x0D5] = 'O'; // Õ
|
||||
mc_Convert[0x0D6] = 'O'; // Ö
|
||||
mc_Convert[0x0D8] = 'O'; // Ø
|
||||
mc_Convert[0x0D9] = 'U'; // Ù
|
||||
mc_Convert[0x0DA] = 'U'; // Ú
|
||||
mc_Convert[0x0DB] = 'U'; // Û
|
||||
mc_Convert[0x0DC] = 'U'; // Ü
|
||||
mc_Convert[0x0DD] = 'Y'; // Ý
|
||||
mc_Convert[0x0DF] = 's'; // ß
|
||||
mc_Convert[0x0E0] = 'a'; // à
|
||||
mc_Convert[0x0E1] = 'a'; // á
|
||||
mc_Convert[0x0E2] = 'a'; // â
|
||||
mc_Convert[0x0E3] = 'a'; // ã
|
||||
mc_Convert[0x0E4] = 'a'; // ä
|
||||
mc_Convert[0x0E5] = 'a'; // å
|
||||
mc_Convert[0x0E6] = 'a'; // æ
|
||||
mc_Convert[0x0E7] = 'c'; // ç
|
||||
mc_Convert[0x0E8] = 'e'; // è
|
||||
mc_Convert[0x0E9] = 'e'; // é
|
||||
mc_Convert[0x0EA] = 'e'; // ê
|
||||
mc_Convert[0x0EB] = 'e'; // ë
|
||||
mc_Convert[0x0EC] = 'i'; // ì
|
||||
mc_Convert[0x0ED] = 'i'; // í
|
||||
mc_Convert[0x0EE] = 'i'; // î
|
||||
mc_Convert[0x0EF] = 'i'; // ï
|
||||
mc_Convert[0x0F1] = 'n'; // ñ
|
||||
mc_Convert[0x0F2] = 'o'; // ò
|
||||
mc_Convert[0x0F3] = 'o'; // ó
|
||||
mc_Convert[0x0F4] = 'o'; // ô
|
||||
mc_Convert[0x0F5] = 'o'; // õ
|
||||
mc_Convert[0x0F6] = 'o'; // ö
|
||||
mc_Convert[0x0F8] = 'o'; // ø
|
||||
mc_Convert[0x0F9] = 'u'; // ù
|
||||
mc_Convert[0x0FA] = 'u'; // ú
|
||||
mc_Convert[0x0FB] = 'u'; // û
|
||||
mc_Convert[0x0FC] = 'u'; // ü
|
||||
mc_Convert[0x0FD] = 'y'; // ý
|
||||
mc_Convert[0x0FF] = 'y'; // ÿ
|
||||
mc_Convert[0x100] = 'A'; // Ā
|
||||
mc_Convert[0x101] = 'a'; // ā
|
||||
mc_Convert[0x102] = 'A'; // Ă
|
||||
mc_Convert[0x103] = 'a'; // ă
|
||||
mc_Convert[0x104] = 'A'; // Ą
|
||||
mc_Convert[0x105] = 'a'; // ą
|
||||
mc_Convert[0x106] = 'C'; // Ć
|
||||
mc_Convert[0x107] = 'c'; // ć
|
||||
mc_Convert[0x108] = 'C'; // Ĉ
|
||||
mc_Convert[0x109] = 'c'; // ĉ
|
||||
mc_Convert[0x10A] = 'C'; // Ċ
|
||||
mc_Convert[0x10B] = 'c'; // ċ
|
||||
mc_Convert[0x10C] = 'C'; // Č
|
||||
mc_Convert[0x10D] = 'c'; // č
|
||||
mc_Convert[0x10E] = 'D'; // Ď
|
||||
mc_Convert[0x10F] = 'd'; // ď
|
||||
mc_Convert[0x110] = 'D'; // Đ
|
||||
mc_Convert[0x111] = 'd'; // đ
|
||||
mc_Convert[0x112] = 'E'; // Ē
|
||||
mc_Convert[0x113] = 'e'; // ē
|
||||
mc_Convert[0x114] = 'E'; // Ĕ
|
||||
mc_Convert[0x115] = 'e'; // ĕ
|
||||
mc_Convert[0x116] = 'E'; // Ė
|
||||
mc_Convert[0x117] = 'e'; // ė
|
||||
mc_Convert[0x118] = 'E'; // Ę
|
||||
mc_Convert[0x119] = 'e'; // ę
|
||||
mc_Convert[0x11A] = 'E'; // Ě
|
||||
mc_Convert[0x11B] = 'e'; // ě
|
||||
mc_Convert[0x11C] = 'G'; // Ĝ
|
||||
mc_Convert[0x11D] = 'g'; // ĝ
|
||||
mc_Convert[0x11E] = 'G'; // Ğ
|
||||
mc_Convert[0x11F] = 'g'; // ğ
|
||||
mc_Convert[0x120] = 'G'; // Ġ
|
||||
mc_Convert[0x121] = 'g'; // ġ
|
||||
mc_Convert[0x122] = 'G'; // Ģ
|
||||
mc_Convert[0x123] = 'g'; // ģ
|
||||
mc_Convert[0x124] = 'H'; // Ĥ
|
||||
mc_Convert[0x125] = 'h'; // ĥ
|
||||
mc_Convert[0x126] = 'H'; // Ħ
|
||||
mc_Convert[0x127] = 'h'; // ħ
|
||||
mc_Convert[0x128] = 'I'; // Ĩ
|
||||
mc_Convert[0x129] = 'i'; // ĩ
|
||||
mc_Convert[0x12A] = 'I'; // Ī
|
||||
mc_Convert[0x12B] = 'i'; // ī
|
||||
mc_Convert[0x12C] = 'I'; // Ĭ
|
||||
mc_Convert[0x12D] = 'i'; // ĭ
|
||||
mc_Convert[0x12E] = 'I'; // Į
|
||||
mc_Convert[0x12F] = 'i'; // į
|
||||
mc_Convert[0x130] = 'I'; // İ
|
||||
mc_Convert[0x131] = 'i'; // ı
|
||||
mc_Convert[0x134] = 'J'; // Ĵ
|
||||
mc_Convert[0x135] = 'j'; // ĵ
|
||||
mc_Convert[0x136] = 'K'; // Ķ
|
||||
mc_Convert[0x137] = 'k'; // ķ
|
||||
mc_Convert[0x138] = 'K'; // ĸ
|
||||
mc_Convert[0x139] = 'L'; // Ĺ
|
||||
mc_Convert[0x13A] = 'l'; // ĺ
|
||||
mc_Convert[0x13B] = 'L'; // Ļ
|
||||
mc_Convert[0x13C] = 'l'; // ļ
|
||||
mc_Convert[0x13D] = 'L'; // Ľ
|
||||
mc_Convert[0x13E] = 'l'; // ľ
|
||||
mc_Convert[0x13F] = 'L'; // Ŀ
|
||||
mc_Convert[0x140] = 'l'; // ŀ
|
||||
mc_Convert[0x141] = 'L'; // Ł
|
||||
mc_Convert[0x142] = 'l'; // ł
|
||||
mc_Convert[0x143] = 'N'; // Ń
|
||||
mc_Convert[0x144] = 'n'; // ń
|
||||
mc_Convert[0x145] = 'N'; // Ņ
|
||||
mc_Convert[0x146] = 'n'; // ņ
|
||||
mc_Convert[0x147] = 'N'; // Ň
|
||||
mc_Convert[0x148] = 'n'; // ň
|
||||
mc_Convert[0x149] = 'n'; // ʼn
|
||||
mc_Convert[0x14C] = 'O'; // Ō
|
||||
mc_Convert[0x14D] = 'o'; // ō
|
||||
mc_Convert[0x14E] = 'O'; // Ŏ
|
||||
mc_Convert[0x14F] = 'o'; // ŏ
|
||||
mc_Convert[0x150] = 'O'; // Ő
|
||||
mc_Convert[0x151] = 'o'; // ő
|
||||
mc_Convert[0x152] = 'O'; // Œ
|
||||
mc_Convert[0x153] = 'o'; // œ
|
||||
mc_Convert[0x154] = 'R'; // Ŕ
|
||||
mc_Convert[0x155] = 'r'; // ŕ
|
||||
mc_Convert[0x156] = 'R'; // Ŗ
|
||||
mc_Convert[0x157] = 'r'; // ŗ
|
||||
mc_Convert[0x158] = 'R'; // Ř
|
||||
mc_Convert[0x159] = 'r'; // ř
|
||||
mc_Convert[0x15A] = 'S'; // Ś
|
||||
mc_Convert[0x15B] = 's'; // ś
|
||||
mc_Convert[0x15C] = 'S'; // Ŝ
|
||||
mc_Convert[0x15D] = 's'; // ŝ
|
||||
mc_Convert[0x15E] = 'S'; // Ş
|
||||
mc_Convert[0x15F] = 's'; // ş
|
||||
mc_Convert[0x160] = 'S'; // Š
|
||||
mc_Convert[0x161] = 's'; // š
|
||||
mc_Convert[0x162] = 'T'; // Ţ
|
||||
mc_Convert[0x163] = 't'; // ţ
|
||||
mc_Convert[0x164] = 'T'; // Ť
|
||||
mc_Convert[0x165] = 't'; // ť
|
||||
mc_Convert[0x166] = 'T'; // Ŧ
|
||||
mc_Convert[0x167] = 't'; // ŧ
|
||||
mc_Convert[0x168] = 'U'; // Ũ
|
||||
mc_Convert[0x169] = 'u'; // ũ
|
||||
mc_Convert[0x16A] = 'U'; // Ū
|
||||
mc_Convert[0x16B] = 'u'; // ū
|
||||
mc_Convert[0x16C] = 'U'; // Ŭ
|
||||
mc_Convert[0x16D] = 'u'; // ŭ
|
||||
mc_Convert[0x16E] = 'U'; // Ů
|
||||
mc_Convert[0x16F] = 'u'; // ů
|
||||
mc_Convert[0x170] = 'U'; // Ű
|
||||
mc_Convert[0x171] = 'u'; // ű
|
||||
mc_Convert[0x172] = 'U'; // Ų
|
||||
mc_Convert[0x173] = 'u'; // ų
|
||||
mc_Convert[0x174] = 'W'; // Ŵ
|
||||
mc_Convert[0x175] = 'w'; // ŵ
|
||||
mc_Convert[0x176] = 'Y'; // Ŷ
|
||||
mc_Convert[0x177] = 'y'; // ŷ
|
||||
mc_Convert[0x178] = 'Y'; // Ÿ
|
||||
mc_Convert[0x179] = 'Z'; // Ź
|
||||
mc_Convert[0x17A] = 'z'; // ź
|
||||
mc_Convert[0x17B] = 'Z'; // Ż
|
||||
mc_Convert[0x17C] = 'z'; // ż
|
||||
mc_Convert[0x17D] = 'Z'; // Ž
|
||||
mc_Convert[0x17E] = 'z'; // ž
|
||||
mc_Convert[0x180] = 'b'; // ƀ
|
||||
mc_Convert[0x189] = 'D'; // Ɖ
|
||||
mc_Convert[0x191] = 'F'; // Ƒ
|
||||
mc_Convert[0x192] = 'f'; // ƒ
|
||||
mc_Convert[0x193] = 'G'; // Ɠ
|
||||
mc_Convert[0x197] = 'I'; // Ɨ
|
||||
mc_Convert[0x198] = 'K'; // Ƙ
|
||||
mc_Convert[0x199] = 'k'; // ƙ
|
||||
mc_Convert[0x19A] = 'l'; // ƚ
|
||||
mc_Convert[0x19F] = 'O'; // Ɵ
|
||||
mc_Convert[0x1A0] = 'O'; // Ơ
|
||||
mc_Convert[0x1A1] = 'o'; // ơ
|
||||
mc_Convert[0x1AB] = 't'; // ƫ
|
||||
mc_Convert[0x1AC] = 'T'; // Ƭ
|
||||
mc_Convert[0x1AD] = 't'; // ƭ
|
||||
mc_Convert[0x1AE] = 'T'; // Ʈ
|
||||
mc_Convert[0x1AF] = 'U'; // Ư
|
||||
mc_Convert[0x1B0] = 'u'; // ư
|
||||
mc_Convert[0x1B6] = 'z'; // ƶ
|
||||
mc_Convert[0x1CD] = 'A'; // Ǎ
|
||||
mc_Convert[0x1CE] = 'a'; // ǎ
|
||||
mc_Convert[0x1CF] = 'I'; // Ǐ
|
||||
mc_Convert[0x1D0] = 'i'; // ǐ
|
||||
mc_Convert[0x1D1] = 'O'; // Ǒ
|
||||
mc_Convert[0x1D2] = 'o'; // ǒ
|
||||
mc_Convert[0x1D3] = 'U'; // Ǔ
|
||||
mc_Convert[0x1D4] = 'u'; // ǔ
|
||||
mc_Convert[0x1D5] = 'U'; // Ǖ
|
||||
mc_Convert[0x1D6] = 'u'; // ǖ
|
||||
mc_Convert[0x1D7] = 'U'; // Ǘ
|
||||
mc_Convert[0x1D8] = 'u'; // ǘ
|
||||
mc_Convert[0x1D9] = 'U'; // Ǚ
|
||||
mc_Convert[0x1DA] = 'u'; // ǚ
|
||||
mc_Convert[0x1DB] = 'U'; // Ǜ
|
||||
mc_Convert[0x1DC] = 'u'; // ǜ
|
||||
mc_Convert[0x1DE] = 'A'; // Ǟ
|
||||
mc_Convert[0x1DF] = 'a'; // ǟ
|
||||
mc_Convert[0x1E0] = 'A'; // Ǡ
|
||||
mc_Convert[0x1E1] = 'a'; // ǡ
|
||||
mc_Convert[0x1E2] = 'A'; // Ǣ
|
||||
mc_Convert[0x1E3] = 'a'; // ǣ
|
||||
mc_Convert[0x1E4] = 'G'; // Ǥ
|
||||
mc_Convert[0x1E5] = 'g'; // ǥ
|
||||
mc_Convert[0x1E6] = 'G'; // Ǧ
|
||||
mc_Convert[0x1E7] = 'g'; // ǧ
|
||||
mc_Convert[0x1E8] = 'K'; // Ǩ
|
||||
mc_Convert[0x1E9] = 'k'; // ǩ
|
||||
mc_Convert[0x1EA] = 'O'; // Ǫ
|
||||
mc_Convert[0x1EB] = 'o'; // ǫ
|
||||
mc_Convert[0x1EC] = 'O'; // Ǭ
|
||||
mc_Convert[0x1ED] = 'o'; // ǭ
|
||||
mc_Convert[0x1F0] = 'j'; // ǰ
|
||||
mc_Convert[0x1F4] = 'G'; // Ǵ
|
||||
mc_Convert[0x1F5] = 'g'; // ǵ
|
||||
mc_Convert[0x1F8] = 'N'; // Ǹ
|
||||
mc_Convert[0x1F9] = 'n'; // ǹ
|
||||
mc_Convert[0x1FA] = 'A'; // Ǻ
|
||||
mc_Convert[0x1FB] = 'a'; // ǻ
|
||||
mc_Convert[0x1FC] = 'A'; // Ǽ
|
||||
mc_Convert[0x1FD] = 'a'; // ǽ
|
||||
mc_Convert[0x1FE] = 'O'; // Ǿ
|
||||
mc_Convert[0x1FF] = 'o'; // ǿ
|
||||
mc_Convert[0x200] = 'A'; // Ȁ
|
||||
mc_Convert[0x201] = 'a'; // ȁ
|
||||
mc_Convert[0x202] = 'A'; // Ȃ
|
||||
mc_Convert[0x203] = 'A'; // ȃ
|
||||
mc_Convert[0x204] = 'E'; // Ȅ
|
||||
mc_Convert[0x205] = 'e'; // ȅ
|
||||
mc_Convert[0x206] = 'E'; // Ȇ
|
||||
mc_Convert[0x207] = 'e'; // ȇ
|
||||
mc_Convert[0x208] = 'I'; // Ȉ
|
||||
mc_Convert[0x209] = 'i'; // ȉ
|
||||
mc_Convert[0x20A] = 'I'; // Ȋ
|
||||
mc_Convert[0x20B] = 'i'; // ȋ
|
||||
mc_Convert[0x20C] = 'O'; // Ȍ
|
||||
mc_Convert[0x20D] = 'o'; // ȍ
|
||||
mc_Convert[0x20E] = 'O'; // Ȏ
|
||||
mc_Convert[0x20F] = 'o'; // ȏ
|
||||
mc_Convert[0x210] = 'R'; // Ȑ
|
||||
mc_Convert[0x211] = 'r'; // ȑ
|
||||
mc_Convert[0x212] = 'R'; // Ȓ
|
||||
mc_Convert[0x213] = 'r'; // ȓ
|
||||
mc_Convert[0x214] = 'U'; // Ȕ
|
||||
mc_Convert[0x215] = 'u'; // ȕ
|
||||
mc_Convert[0x216] = 'U'; // Ȗ
|
||||
mc_Convert[0x217] = 'u'; // ȗ
|
||||
mc_Convert[0x218] = 'S'; // Ș
|
||||
mc_Convert[0x219] = 's'; // ș
|
||||
mc_Convert[0x21A] = 'T'; // Ț
|
||||
mc_Convert[0x21B] = 't'; // ț
|
||||
mc_Convert[0x21E] = 'H'; // Ȟ
|
||||
mc_Convert[0x21F] = 'h'; // ȟ
|
||||
mc_Convert[0x224] = 'Z'; // Ȥ
|
||||
mc_Convert[0x225] = 'z'; // ȥ
|
||||
mc_Convert[0x226] = 'A'; // Ȧ
|
||||
mc_Convert[0x227] = 'a'; // ȧ
|
||||
mc_Convert[0x228] = 'E'; // Ȩ
|
||||
mc_Convert[0x229] = 'e'; // ȩ
|
||||
mc_Convert[0x22A] = 'O'; // Ȫ
|
||||
mc_Convert[0x22B] = 'o'; // ȫ
|
||||
mc_Convert[0x22C] = 'O'; // Ȭ
|
||||
mc_Convert[0x22D] = 'o'; // ȭ
|
||||
mc_Convert[0x22E] = 'O'; // Ȯ
|
||||
mc_Convert[0x22F] = 'o'; // ȯ
|
||||
mc_Convert[0x230] = 'O'; // Ȱ
|
||||
mc_Convert[0x231] = 'o'; // ȱ
|
||||
mc_Convert[0x232] = 'Y'; // Ȳ
|
||||
mc_Convert[0x233] = 'y'; // ȳ
|
||||
mc_Convert[0x234] = 'l'; // ȴ
|
||||
mc_Convert[0x235] = 'n'; // ȵ
|
||||
mc_Convert[0x23A] = 'A'; // Ⱥ
|
||||
mc_Convert[0x23B] = 'C'; // Ȼ
|
||||
mc_Convert[0x23C] = 'c'; // ȼ
|
||||
mc_Convert[0x23D] = 'L'; // Ƚ
|
||||
mc_Convert[0x23E] = 'T'; // Ⱦ
|
||||
mc_Convert[0x23F] = 's'; // ȿ
|
||||
mc_Convert[0x240] = 'z'; // ɀ
|
||||
mc_Convert[0x243] = 'B'; // Ƀ
|
||||
mc_Convert[0x244] = 'U'; // Ʉ
|
||||
mc_Convert[0x246] = 'E'; // Ɇ
|
||||
mc_Convert[0x247] = 'e'; // ɇ
|
||||
mc_Convert[0x248] = 'J'; // Ɉ
|
||||
mc_Convert[0x249] = 'j'; // ɉ
|
||||
mc_Convert[0x24C] = 'R'; // Ɍ
|
||||
mc_Convert[0x24D] = 'r'; // ɍ
|
||||
mc_Convert[0x24E] = 'Y'; // Ɏ
|
||||
mc_Convert[0x24F] = 'y'; // ɏ
|
||||
mc_Convert[0x261] = 'g'; // ɡ
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user