我正在做一些简单的事情,莫尔斯电码翻译。我想知道如何在字符串末尾添加字母,例如,' - '代表'O'
答案 0 :(得分:0)
Dictionary<char, String> morseCode = new Dictionary<char, String>()
{
{'a' , ".-"},{'b' , "-..."},{'c' , "-.-."},
{'d' , "-.."},{'e' , "."},{'f' , "..-."},
{'g' , "--."},{'h' , "...."},{'i' , ".."},
{'j' , ".---"},{'k' , "-.-"},{'l' , ".-.."},
{'m' , "--"},{'n' , "-."},{'o' , "---"},
{'p' , ".--."},{'q' , "--.-"},{'r' , ".-."},
{'s' , "..."},{'t' , "-"},{'u' , "..-"},
{'v' , "...-"},{'w' , ".--"},{'x' , "-..-"},
{'y' , "-.--"},{'z' , "--.."},
{'0' , "-----"},{'1' , ".----"},{'2' , "..----"},{'3' , "...--"},
{'4' , "....-"},{'5' , "....."},{'6' , "-...."},{'7' , "--..."},
{'8' , "---.."},{'9' , "----."},
};
string userText = "String To Test";
userText = userText.ToLower();
var sb = string.Empty; //var sb = new StringBuilder();
for (int index = 0; index < userText.Length; index++)
{
var t = userText[index];
if (t != ' ')
{
string morseValue;
if (morseCode.TryGetValue(t, out morseValue))
{
sb += morseValue + " "; //or sb.Append(morseValue + " ");
}
}
else {
sb += "\n"; //or sb.Append("\n");
}
}
Console.WriteLine(sb); // or Console.WriteLine(sb.ToString());
我已向您展示了这两个例子。如果你想测试它试试这里: http://rextester.com/OYGUG79820
答案 1 :(得分:0)
你可以在字符串上使用+
运算符,它们将它们连接在一起:
var code = "...." + " " + ".."; // This will result in: ".... .."
为了连接多个字符串,比如在我们转换每个字符并附加它的循环中,使用StringBuilder
更快并且使用更少的内存:
public static string MorseEncode(string inputString)
{
if (inputString == null) return null;
var codeBuilder = new StringBuilder();
foreach (char input in inputString)
{
// Assuming you have a method to get the morse code for a char
string encodedChar = GetMorseCode(input);
// Append our encoded char to our StringBuilder
codeBuilder.Append(encodedChar);
}
// Return the String representation of our StringBuilder
return codeBuilder.ToString();
}