当我尝试将输入的莫尔斯电码替换为文本时,我遇到了问题。基本上问题在于,当用户输入“.”时,程序会打印字母“E”(莫尔斯电码中的“.”)并忽略其后的所有其他句点以制作具有两个或更多连续字母的其他字母期间。

我应该如何解决这个问题?

我知道这可能是一个非常新手的问题,但我一整天都在努力寻找答案。

这是代码

public partial class Morsetext : PhoneApplicationPage
{

    public string[] aakkoset = { ".", "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", "?", ":",
                                 ",", "@", "/", "=", " ",
                                 };
    public string[] morse = {".-.-.-", ".-", "-...", "-.-.", "-..", ".",
                              "..-.", "--.", ".... ", "..", ".---",
                              "-.-", ".-..", "--", "-.", "---",
                              ".--.", "--.-", ".-.", "...", "-",
                              "..-", "...-", ".--", "-..-", "-.--",
                              "--..", ".-.-", "---.", "-----", ".----",
                              "..---", "...--", "....-", ".....", "-....",
                              "--...", "---..","----.", "..--..", "---...",
                              "-....-", ".--.-.", "-..-.", "-...-", " ",
                              };

    public Morsetext()
    {
        InitializeComponent();
    }

    private void bShort_Click(object sender, RoutedEventArgs e)
    {
        char piste = '.';

        tBoxMorse2.Text += piste.ToString();

    }

    private void tBoxMorse2_TextChanged(object sender, TextChangedEventArgs e)
    {

        tBlockText2.Text =  tBoxMorse2.Text.ToUpper()
            .Replace(morse[0],aakkoset[0])
            .Replace(morse[1],aakkoset[1])
            .Replace(morse[2],aakkoset[2])
            .Replace(morse[3],aakkoset[3])
            .Replace(morse[4],aakkoset[4])
            .Replace(morse[5],aakkoset[5])
            .Replace(morse[6],aakkoset[6])
            .Replace(morse[7],aakkoset[7])
            .Replace(morse[8],aakkoset[8])
            .Replace(morse[9],aakkoset[9])
            .Replace(morse[10],aakkoset[10])
            .Replace(morse[11],aakkoset[11])
            .Replace(morse[12],aakkoset[12])
            .Replace(morse[13],aakkoset[13])
            .Replace(morse[14],aakkoset[14])
            .Replace(morse[15],aakkoset[15])
            .Replace(morse[16],aakkoset[16])
            .Replace(morse[17],aakkoset[17])
            .Replace(morse[18],aakkoset[18])
            .Replace(morse[19],aakkoset[19])
            .Replace(morse[20],aakkoset[20])
            .Replace(morse[21],aakkoset[21])
            .Replace(morse[22],aakkoset[22])
            .Replace(morse[23],aakkoset[23])
            .Replace(morse[24],aakkoset[24])
            .Replace(morse[25],aakkoset[25])
            .Replace(morse[26],aakkoset[26])
            .Replace(morse[27],aakkoset[27])
            .Replace(morse[28],aakkoset[28])
            .Replace(morse[29],aakkoset[29])
            .Replace(morse[30],aakkoset[30])
            .Replace(morse[31],aakkoset[31])
            .Replace(morse[32],aakkoset[32])
            .Replace(morse[33],aakkoset[33])
            .Replace(morse[34],aakkoset[34])
            .Replace(morse[35],aakkoset[35])
            .Replace(morse[36],aakkoset[36])
            .Replace(morse[37],aakkoset[37])
            .Replace(morse[38],aakkoset[38])
            .Replace(morse[39],aakkoset[39])
            .Replace(morse[40],aakkoset[40])
            .Replace(morse[41],aakkoset[41])
            .Replace(morse[42],aakkoset[42])
            .Replace(morse[43],aakkoset[43])
            .Replace(morse[44],aakkoset[44]);

    }

最佳答案

最简单的解决方案是将您的替换从最长的莫尔斯弦重新排序到最短的莫尔斯弦最后。

关于c# - 将莫尔斯电码解码为文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8540403/

10-13 09:26