[英]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)]));
提取模型 ,您的情況下字母及其名稱對應:
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
}
如果您還希望對A
, D
, Z
類A
大寫字母進行編碼,只需添加
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.