将字符串中的字母更改为短语(例如 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();
}
填写缺失的拼音代码即可。
我目前正在编写一个小型 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();
}
填写缺失的拼音代码即可。