簡體   English   中英

如何在C#中以語音字母輸入名稱並將其輸出

[英]how can I input a name and output it in phonetic alphabet in C#

public static void militarySpell() 
{
    Console.WriteLine("Type");
    string spell = Convert.ToString(Console.ReadLine());
    switch (spell) 
    {
        case("a"):
            string a = "Alfa";
            spell = a;
            Console.WriteLine(spell);
            break;
        case ("b"):
            string b = "Bravo";
            spell = b;
            Console.WriteLine(spell);
            break;
        case ("c"):
            string c = "Charlie";
            spell = c;
            Console.WriteLine(spell);
            break;
        case ("d"):
            string d = "Delta";
            Console.WriteLine(d);
            break;
        case ("e"):
            string e = "Echo";
            Console.WriteLine(e);
            break;
        case ("f"):
            string f = "Foxtrot";
            Console.WriteLine(f);
            break;
        case ("g"):
            string g = "Golf";
            Console.WriteLine(g);
            break;
        case ("h"):
            string h = "Hotel";
            Console.WriteLine(h);
            break;
        case ("i"):
            string i = "India";
            Console.WriteLine(i);
            break;
        case ("j"):
            string j = "Juliet";
            Console.WriteLine(j);
            break;
        case ("k"):
            string k = "Kilo";
            Console.WriteLine(k);
            break;
        case ("l"):
            string l = "Lima";
            Console.WriteLine(l);
            break;
        case ("m"):
            string m = "Mike";
            Console.WriteLine(m);
            break;
        case ("n"):
            string n = "November";
            Console.WriteLine(n);
            break;
        case ("o"):
            string o = "Oscar";
            Console.WriteLine(o);
            break;
        case ("p"):
            string p = "Papa";
            Console.WriteLine(p);
            break;
        case ("q"):
            string q = "Quebec";
            Console.WriteLine(q);
            break;
        case ("r"):
            string r = "Romeo";
            Console.WriteLine(r);
            break;
        case ("s"):
            string s = "Sierra";
            Console.WriteLine(s);
            break;
        case ("t"):
            string t = "Tango";
            Console.WriteLine(t);
            break;
        case ("u"):
            string u = "Uniform";
            Console.WriteLine(u);
            break;
        case ("v"):
            string v = "Victor";
            Console.WriteLine(v);
            break;
        case ("w"):
            string w = "Whiskey";
            Console.WriteLine(w);
            break;
        case ("x"):
            string x = "X-Ray";
            Console.WriteLine(x);
            break;
        case ("y"):
            string y = "Yankee";
            Console.WriteLine(y);
            break;
        case ("z"):
            string z = "Zulu";
            Console.WriteLine(z);
            break;
    }   
    Console.ReadLine();
}

這是我的代碼,但是問題是它只輸出一個字,我想輸入一個名稱,例如“ Matt”,然后輸出(Mike Alfa Tango Tango)。

Dictionary完美用例

Dictionary<char, string> dDict = new Dictionary<char, string>() {{'a', "Alfa"}, {'b', "Bravo"}, {'c', "Charlie"}, {'d', "Delta"}, {'e', "Echo"}, {'f', "Foxtrot"}, {'g', "Golf"}, {'h', "Hotel"}, {'i', "India"}, {'j', "Juliet"}, {'k', "Kilo"}, {'l', "Lima"}, {'m', "Mike"}, {'n', "November"}, {'o', "Oscar"}, {'p', "Papa"}, {'q', "Quebec"}, {'r', "Romeo"}, {'s', "Sierra"}, {'t', "Tango"}, {'u', "Uniform"}, {'v', "Victor"}, {'w', "Whiskey"}, {'x', "X-Ray"}, {'y', "Yankee"}, {'z', "Zulu"}};
string result = string.Join(" ", "Matt".Select(x => dDict[char.ToLower(x)]));

https://dotnetfiddle.net/VsD5Mc

提取模型 ,您的情況下字母及其名稱對應:

private static Dictionary<char, string> s_Alphabet = new Dictionary<char, string>() {
  { 'a', "Alpha"},
   ...
  { 'z', "Zulu"},
};

您可以說得很簡單

private static string ToAlphabet(string value) {
  return string.Join(Environment.NewLine, value
    .Select(c => s_Alphabet.TryGetValue(c, out var v) 
       ? v               // we know the letter, e.g. 'a', 'e'
       : c.ToString())); // we don't know the letter, e.g. space, full stop
}

如果您還希望對ADZA大寫字母進行編碼,只需添加

char.ToLower() ,即:

private static string ToAlphabet(string value) {
   return string.Join(Environment.NewLine, value
     .Select(c => s_Alphabet.TryGetValue(char.ToLower(c), out var v) 
        ? v               // we know the letter, e.g. 'a', 'e'
        : c.ToString())); // we don't know the letter, e.g. space, full stop
 }

我想我看到你的問題了。 您需要使用loop來構建您的字符串。

  Console.WriteLine("Type");
  StringBuilder sb = new StringBuilder();     
  string spell = Convert.ToString(Console.ReadLine());
  foreach (var c in spell.ToUpperInvariant().ToCharArray())
  { //make it uppercase to eliminate case sensitivity
     switch (c) 
     {
        case('A'):  //case now evaluates uppercase chars, so single quotes               
            sb.Append("Alfa "); //no need for the local var but add a space
            break;
        //your other cases omitted for brevity
     }   

  }
  Console.WriteLine(sb.ToString());
  Console.ReadLine();

修改為首先接受整個單詞。 請注意,在通過開關和在開關中運行字符之前,您要將其轉換為上字符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM