Замените буквы в строке на фразы (например, D на Delta,) - PullRequest
1 голос
/ 18 июня 2019

Я сейчас пишу небольшую программу УВД. Я использую функцию преобразования текста в речь и хотел бы, чтобы она читала буквы, как в авиационном алфавите. Например, A произносится как Альфа, B как Браво и т. Д.

В данный момент я использовал показанный метод поиска и замены, но я чувствую, что это неэффективно и не нужно.

lblDialogHidden.Text = txtCallsign.Text.Replace("D", "Delta, ");
lblDialogHidden.Text = txtCallsign.Text.Replace("E", "Echo, ");

// this converts the Letters to Aviation Alphabet phrases, so they are spoken rather than sounded out, or spoken as a complete word such as DEG.

Это работает, но, как я уже сказал, это кажется худшим способом сделать то, что я хотел бы сделать.

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Вам лучше обработать всю строку за один раз так:

      public string ToPhonetic(string source)
      {
         var sb = new StringBuilder();
         foreach (var ch in source.ToUpper())
         {
            switch (ch)
            {
               case 'A':
                  sb.Append("Alpha, ");
                  break;

               case 'B':
                  sb.Append("Bravo, ");
                  break;

               default:
                  sb.Append(ch);
                  break;
            }
         }

         return sb.ToString();
      }

Заполните пропущенные фонетические коды и начинайте.

0 голосов
/ 18 июня 2019

Вы можете использовать Dictonary в этом случае:

public static void Main()
    {
            Dictionary<char, string> dDict = new Dictionary<char, string>() { { 'a', "Alfa" }, { 'b', "Bravo" } };
            string result = string.Join(" ", "abc".Select(x => dDict.Select(p=>p.Key).Contains(x) ? dDict[char.ToLower(x)] : x.ToString()));
            Console.WriteLine(result);
    }

Выход:

Alfa Bravo c
...