2016-11-01 25 views
1

Я хочу создать каталог в папке «Содержимое» на веб-уровне при создании категории новых продуктов, но поскольку имена категорий в Cirillyc и Cirillyc на пути не очень хорошие, было бы разумно создать папка с транслитерированным именем. Я пробовал UnidecodeSharpFork, но он создает разные символы (например, «), которые также не подходят для имени каталога. Есть ли другие варианты в этой ситуации?Transliterate from Cirillyc to Latin

ответ

1

Вы можете попробовать реализовать транслитерации карту malually:

// 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(); 
})); 

Test

// My string (Moya Stroka) 
Console.Write(result);