Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Microsoft .NET

  Все выпуски  

RFpro.ru: Microsoft .NET


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

solowey
Статус: Советник
Рейтинг: 114
∙ повысить рейтинг »
CradleA
Статус: Мастер-Эксперт
Рейтинг: 52
∙ повысить рейтинг »
Лысков Игорь Витальевич
Статус: Мастер-Эксперт
Рейтинг: 0
∙ повысить рейтинг »

.NET Framework / C# / Java

Номер выпуска:328
Дата выхода:05.06.2022, 16:15
Администратор рассылки:Коцюрбенко Алексей Владимирович (Старший модератор)
Подписчиков / экспертов:5 / 17
Вопросов / ответов:1 / 1

Консультация # 202957: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Я написал программу которая должна переводить из русских букв в английские, но она делает обратное: переводит из английских в русские Как это исправить?
Код
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Threading.Tasks;

namespace Translit

{
    public class TranslitMethods
    {
        public class Translitter
        {
            private List<TranslitSymbol> TranslitSymbols { get; set; }

            /// <summary>
            /// Метод транслитерации русского текстав
            /// </summary>
            /// <param name="source">Исходная строка на русском</param>
            /// <param name="type">Тип транслитерации</param>
            /// <returns></returns>
            public string Translit(string source, TranslitType type)
            {
                var result = "";

                for (var i = 0; i < source.Length; i++)
                {
                    result = result +
                    (TranslitSymbols.FirstOrDefault(x => x.SymbolEng == source[i].ToString() && x.TranslitType == type) == null
                    ? source[i].ToString()
                    : TranslitSymbols.First(x => x.SymbolEng == source[i].ToString() && x.TranslitType == type).SymbolRus);
                }

                return result;
            }
            public Translitter()
            {
            
                this.TranslitSymbols = new List<TranslitSymbol>();

                string сurs = System.IO.File.ReadAllText(@"D:\Transliteration.txt");
                
                // Заполняем сопоставления по транслитерации
                foreach (string item in сurs.Split(","))
                {
                    string[] symbols = item.Split(":");
                    this.TranslitSymbols.Add(new TranslitSymbol
                    {
                        TranslitType = TranslitType.сurs,
                        SymbolRus = symbols[0].ToLower(),
                        SymbolEng = symbols[1].ToLower(),

                    });
                    this.TranslitSymbols.Add(new TranslitSymbol
                    {
                        TranslitType = TranslitType.сurs,
                        SymbolRus = symbols[0].ToUpper(),
                        SymbolEng = symbols[1].ToUpper()
                        
                    });
                    
                }

            }
        }

        public enum TranslitType
        {
            сurs
        }

        // Описание элемента справочника транскрипций
        private class TranslitSymbol
        {
            public TranslitType TranslitType { set; get;  }
            public string SymbolEng { set; get; }
            public string SymbolRus { set; get;  }
        }
    }
}
namespace Translit
{
    class Program
    {
        static void Main(string[] args)

        {
            //string val = "perevod.txt";
            
            Console.Write("Введите фразу: ");
            string val = Console.ReadLine();
            Console.WriteLine("Оригинал: " + val);
            TranslitMethods.Translitter trn = new TranslitMethods.Translitter();
            Console.WriteLine("Транслитерация: " + trn.Translit(val, TranslitMethods.TranslitType.сurs));

            Console.ReadKey();
        }
    }
}


Результаты представлены в виде скриншотов

Дата отправки: 31.05.2022, 15:58
Вопрос задал: Rivarez (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует solowey (Советник):

Добрый день.
А где в вашем коде перевод с русского на транслит?

Код [C#]
               for (var i = 0; i < source.Length; i++)
                {
                    result = result +
                    (TranslitSymbols.FirstOrDefault(x => x.SymbolEng == source[i].ToString() && x.TranslitType == type) == null
                    ? source[i].ToString()
                    : TranslitSymbols.First(x => x.SymbolEng == source[i].ToString() && x.TranslitType == type).SymbolRus);
                }

Тут вы ищете только английские буквы. Этот метод не подходит для поиска русских.
Добавьте метод для перевода с русского на транслит.

Консультировал: solowey (Советник)
Дата отправки: 03.06.2022, 11:21
Рейтинг ответа:

НЕ одобряю +1 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное