将字符串中的字母更改为短语(例如 D 到 Delta、)

Change Letters in a string to phrases (eg D to Delta, )

我目前正在编写一个小型 ATC 程序。我正在使用文字转语音功能,并希望它能像航空字母表中那样朗读字母。例如,A 说成 Alpha,B 说成 Bravo,依此类推。

目前,我使用了所示的查找和替换方法,但我觉得这是低效且不必要的。

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.

这可行,但正如我所说,这似乎是做我想做的事情的最糟糕的方法。

在这种情况下,您可以使用 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

你最好像这样一次处理整个字符串:

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

填写缺失的拼音代码即可。