检查莫尔斯电码转换器的输入

时间:2013-01-28 17:32:46

标签: c# asp.net

我想检查用户的输入,以确保它们只输入点和破折号,任何其他字母或数字都会返回并显示错误消息。此外,我想让用户进入空间,但当我转换时,我如何删除或忽略空格?

string permutations;
        string entered = "";
        do
        {
            Console.WriteLine("Enter Morse Code: \n");
            permutations = Console.ReadLine();
         .
         .
         } while(entered.Length != 0);

谢谢!

2 个答案:

答案 0 :(得分:3)

string permutations = string.Empty;
Console.WriteLine("Enter Morse Code: \n");
permutations = Console.ReadLine(); // read the console
bool isValid = Regex.IsMatch(permutations, @"^[-. ]+$"); // true if it only contains whitespaces, dots or dashes
if (isValid) //if input is proper
{
    permutations = permutations.Replace(" ",""); //remove whitespace from string
}
else //input is not proper
{
    Console.WriteLine("Error: Only dot, dashes and spaces are allowed. \n"); //display error
}

答案 1 :(得分:2)

假设您将字母分隔为单个空格,将单词分隔两个空格。然后,您可以使用像这样的正则表达式测试您的字符串是否格式良好

bool ok = Regex.IsMatch(entered, @"^(\.|-)+(\ {1,2}(\.|-)+)*$");

正则表达式解释:
^是字符串的开头。
\.|-是一个点(使用\进行转义,因为点在正则表达式中具有特殊含义)或(|)减号。 +表示一个或多个重复剩下的内容(点或负) \ {1,2}一个或两个空格(后面再加上点或误点(\.|-)+*重复空格,然后是零点或小数点零次或多次 $是该行的结尾。

您可以使用

拆分空格处的字符串
string[] parts = input.Split();

两个空格将创建一个空条目。这允许您检测字边界。 E.g。

"–– ––– .–. ... .  –.–. ––– –.. .".Split();

生成以下字符串数组

{string[10]}
    [0]: "––"
    [1]: "–––"
    [2]: ".–."
    [3]: "..."
    [4]: "."
    [5]: ""
    [6]: "–.–."
    [7]: "–––"
    [8]: "–.."
    [9]: "."