Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Cirillyc音译为拉丁语_C#_.net_Asp.net Mvc_Transliteration - Fatal编程技术网

C# 从Cirillyc音译为拉丁语

C# 从Cirillyc音译为拉丁语,c#,.net,asp.net-mvc,transliteration,C#,.net,Asp.net Mvc,Transliteration,我希望在创建新产品类别时,在Web层的内容文件夹中创建一个目录,但由于类别名称位于Cirillyc中,且路径中的Cirillyc不好,因此最好使用音译名称创建一个文件夹。我尝试了UnidecodeSharpFork,但它产生了不同的符号(如“'),这对目录名也不好。在这种情况下还有其他选择吗?您可以尝试正常实现音译映射: 试验 // Capital letters should be transliterated by the same scheme public class CaseInsen

我希望在创建新产品类别时,在Web层的内容文件夹中创建一个目录,但由于类别名称位于Cirillyc中,且路径中的Cirillyc不好,因此最好使用音译名称创建一个文件夹。我尝试了UnidecodeSharpFork,但它产生了不同的符号(如“'),这对目录名也不好。在这种情况下还有其他选择吗?

您可以尝试正常实现音译映射:

试验

// Capital letters should be transliterated by the same scheme
public class CaseInsensitiveComparer: IEqualityComparer<char> {
  public bool Equals(char left, char right) {
    return char.ToUpperInvariant(left) == char.ToUpperInvariant(right);
  }
  public int GetHashCode(char value) {
    return char.ToUpperInvariant(value).GetHashCode();
  }
}

...

// implement map manually 
private static Dictionary<char, String> map = 
  new Dictionary<char, string>(new CaseInsensitiveComparer()) {
    {'а', "a" },
    {'б', "b" },
    ...
    {'я', "ya" },
};
string source = "My string (Моя Строка)";

string result = string.Concat(source.Select(c => {
  string st;

  if (map.TryGetValue(c, out st))
    return char.IsUpper(c) ? st.ToUpperInvariant() : st;
  else
    return c.ToString();
}));
// My string (Moya Stroka) 
Console.Write(result);