Как заменить все символы не на кириллице, латинице.

Garantez

Новичок
Регистрация
07.10.2022
Сообщения
6
Благодарностей
1
Баллы
3
Парсятся названия статей, которые становятся названиями папок. Если статья на чешском и т. д. языке, где есть разные "левые" символы, то папка с таким символом не создастся. Надо заменить
все такие любые символы к примеру на 1.
 

THE CaHeK

Client
Регистрация
29.01.2016
Сообщения
296
Благодарностей
116
Баллы
43
Можно создать словарь с такими "левыми" символами, и в значение подставлять нужную букву.

C#:
public static class Converter
{
    private static readonly Dictionary<char, string> ConvertedLetters = new Dictionary<char, string>
    {
        // Українські букви
        {'є',"ye"},
        {'ї',"yi"},
        {'і',"i"},
        {'ґ',"g"},
        //Рус
        {'а', "a"},
        {'б', "b"},
        {'в', "v"},
        {'г', "g"},
        {'д', "d"},
        {'е', "e"},
        {'ё', "yo"},
        {'ж', "zh"},
        {'з', "z"},
        {'и', "i"},
        {'й', "j"},
        {'к', "k"},
        {'л', "l"},
        {'м', "m"},
        {'н', "n"},
        {'о', "o"},
        {'п', "p"},
        {'р', "r"},
        {'с', "s"},
        {'т', "t"},
        {'у', "u"},
        {'ф', "f"},
        {'х', "h"},
        {'ц', "c"},
        {'ч', "ch"},
        {'ш', "sh"},
        {'щ', "sch"},
        {'ъ', "j"},
        {'ы', "i"},
        {'ь', "j"},
        {'э', "e"},
        {'ю', "yu"},
        {'я', "ya"},
    };

    public static string ConvertToLatin(string source)
    {
        var result = new StringBuilder();
        foreach (var letter in source)
        {
            try{
            result.Append(ConvertedLetters[letter]);
               }
            catch{result.Append(letter);}// Тут символ вставляется как есть. Но можно заменять на то что вы хотите. Ну либо постепенно наполнить ваш словарь, символами которые не конвертировались
        }
        return result.ToString();
    }
}
 
  • Спасибо
Реакции: Garantez

Garantez

Новичок
Регистрация
07.10.2022
Сообщения
6
Благодарностей
1
Баллы
3
Можно создать словарь с такими "левыми" символами, и в значение подставлять нужную букву.

C#:
public static class Converter
{
    private static readonly Dictionary<char, string> ConvertedLetters = new Dictionary<char, string>
    {
        // Українські букви
        {'є',"ye"},
        {'ї',"yi"},
        {'і',"i"},
        {'ґ',"g"},
        //Рус
        {'а', "a"},
        {'б', "b"},
        {'в', "v"},
        {'г', "g"},
        {'д', "d"},
        {'е', "e"},
        {'ё', "yo"},
        {'ж', "zh"},
        {'з', "z"},
        {'и', "i"},
        {'й', "j"},
        {'к', "k"},
        {'л', "l"},
        {'м', "m"},
        {'н', "n"},
        {'о', "o"},
        {'п', "p"},
        {'р', "r"},
        {'с', "s"},
        {'т', "t"},
        {'у', "u"},
        {'ф', "f"},
        {'х', "h"},
        {'ц', "c"},
        {'ч', "ch"},
        {'ш', "sh"},
        {'щ', "sch"},
        {'ъ', "j"},
        {'ы', "i"},
        {'ь', "j"},
        {'э', "e"},
        {'ю', "yu"},
        {'я', "ya"},
    };

    public static string ConvertToLatin(string source)
    {
        var result = new StringBuilder();
        foreach (var letter in source)
        {
            try{
            result.Append(ConvertedLetters[letter]);
               }
            catch{result.Append(letter);}// Тут символ вставляется как есть. Но можно заменять на то что вы хотите. Ну либо постепенно наполнить ваш словарь, символами которые не конвертировались
        }
        return result.ToString();
    }
}
да, именно подобным образом я пока и делаю, но постоянно появляются новые символы, то сердечки, то иероглифы то еще какая нибудь хрень.
 

THE CaHeK

Client
Регистрация
29.01.2016
Сообщения
296
Благодарностей
116
Баллы
43
Тогда можете в 54 строке изменить - letter на "1".
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)