字典小写字母&;大写字母c#

字典小写字母&;大写字母c#,c#,C#,如何得到一个特殊的算法,使大写字母和简单字母具有相同的值。 示例- Ā->Aa -ā->aa -Č->Ch -ch->ch public static readonly Dictionary<string, string> dict = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase) { {"Ā", "Aa"}, {"Č", "Ch"}, {"Ē", "Ee"},

如何得到一个特殊的算法,使大写字母和简单字母具有相同的值。 示例- Ā->Aa
-ā->aa
-Č->Ch
-ch->ch

public static readonly Dictionary<string, string> dict = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
    {"Ā", "Aa"},
    {"Č", "Ch"},
    {"Ē", "Ee"},
    {"Ī", "Ii"},
    {"Š", "Sh"},
    {"Ū", "Uu"},
    {"Ž", "Zh"}
};

替换区分大小写,因此您的代码将只替换大写字母,您也可以对小写字母执行相同的替换:

foreach (var item in dict)
{
        inputText = inputText.Replace(item.Key, item.Value)
                             .Replace(item.Key.ToLower(), item.Value.ToLower());
}
但正如@TimSchmelter所说,最好在字典中同时包含小写和大写字母,如:

public static readonly Dictionary<string, string> dict = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
    {"Č", "Ch"},
    {"č", "ch"},
    //other items
};
public static readonly Dictionary dict=new Dictionary(StringComparer.OrdinalIgnoreCase)
{
{“Č”,“Ch”},
{“č”,“ch”},
//其他项目
};

添加小写字母tooI首先会问您是否需要这样做,.NET中有文化字符串比较代码,只要您告诉它在比较时要使用哪种文化,就可以直接处理这种复杂性。你知道你真的需要这样做吗?作为我的意思的一个例子,你可以尝试以下代码:
StringComparer.Create(CultureInfo.GetCultureInfo(“de”),true)。Equals(“heiße”,“heisse”)
,这是一个德语文本比较,其中
ss
被认为是相等的。你确定没有可用的区域性来处理这个问题吗?@LasseVågsætherKarlsen:这看起来更像是删除了变音符号,就像一些使用德语umlauts(
u
->
ue
ä
->
ae
,…)为了避免区域性问题,我将在字典中添加小写字母键值对,如下所示well@TimSchmelter你是绝对正确的,我得到的暗示是,他不想写小写值,这就是为什么我这样回答,我自己会按照你说的方式来做。让我把它添加到我的答案中。
public static readonly Dictionary<string, string> dict = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
    {"Č", "Ch"},
    {"č", "ch"},
    //other items
};