Неполадка с заменой букв (оператор ".Replace") - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет! У меня есть свой алфавит (не спрашивайте, зачем мне это нужно) и мне нужно сделать переводчик с русского языка на придуманный. Но этот переводчик не должен просто слова заменять, а буквы. Например, в русском алфавите 33 буквы (от А до Я), у меня тоже 33. Мне нужно, чтобы когда я писал слово, переводчик в этом слове как-бы заменял все буквы русского алфавита всеми буквами моего (например если с русского на английский перевести "АБВГД", то получится "ABCDE" и так далее и тому подобное). Я надеюсь, что Вы уяснили суть, и я понятно объяснил смысл. Моя проблема заключается в том, что буквы заменяются несколько раз. Например, первые четыре буквы русского алфавита выглядят так: А, Б, В, Г, а первые четыре буквы моего алфавита выглядят так: И, Г, О, Т. Соответственно, если переводить слово "Абвг" на мой язык, то должно получиться "Игот", но получается "Итот". Это происходит, потому что сначала букве "А" присваивается значение "И", букве "б" - "г", букве "в" - "о", а букве "г", как казалось бы должно присвоиться значение "т". Так оно и происходит. Но дело в том, что до этого букве "б" уже было присвоено значение "г" и происходит повторное присвоение этой же буквы: "г" -> "т". Поэтому и получается не "Игот", а "Итот". Мне необходимо сделать так, чтобы те буквы, которые уже были заменены, больше не меняли своё значение. Заранее спасибо. Мой код:
static void Main(string[] args)
        {
            Console.Write("Введите слово, которое хотите перевести на язык: ");
            string Word = Convert.ToString(Console.ReadLine());
 
            Word = Word.Replace("А", "И").Replace("б", "г").Replace("в", "о").Replace("г", "т");
 
            Console.WriteLine("Перевод: " + Word);
            Console.ReadKey();
        }

Решение задачи: «Неполадка с заменой букв (оператор ".Replace")»

textual
Листинг программы
var dic = new char[255];
            dic[(byte)'a'] = 'и';
            dic[(byte)'b'] = 'г';
            dic[(byte)'c'] = 'о';
            dic[(byte)'d'] = 'т';
 
            //var result = new string("abcd".Select(x => dic[(byte)x]).ToArray());
 
            var builder = new StringBuilder("abcd".Length);
            foreach (var ch in "abcd")
            {
                builder.Append(dic[(byte)ch]);
            }
 
            var result = builder.ToString();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.444 из 5
Похожие ответы