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

C# 检查莫尔斯电码转换器的输入,c#,asp.net,C#,Asp.net,我想检查用户的输入,确保他们只输入点和破折号,任何其他字母或数字都会返回错误消息。我还想允许用户在转换时输入一个空格。如何删除或忽略空白 string permutations; string entered = ""; do { Console.WriteLine("Enter Morse Code: \n"); permutations = Console.ReadLine();

我想检查用户的输入,确保他们只输入点和破折号,任何其他字母或数字都会返回错误消息。我还想允许用户在转换时输入一个空格。如何删除或忽略空白

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

谢谢

假设你用一个空格分隔字母,用两个空格分隔单词。然后,您可以使用如下正则表达式测试字符串的格式是否正确

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
}
bool ok = Regex.IsMatch(entered, @"^(\.|-)+(\ {1,2}(\.|-)+)*$");
正则表达式解释:
^
是字符串的开头。
\.\124;-
是一个点(用
\
转义,因为点在正则表达式中有特殊含义)或(
)一个减号。
+
表示剩余内容的一次或多次重复(点或减号)。
\{1,2}
一个或两个空格(后跟点或负号
(\.\124;-)+
)。
*
重复空格后面的点或负号零次或多次。
$
是该行的结尾

可以在空格处使用

string[] parts = input.Split();
两个空格将创建一个空条目。这允许您检测单词边界。例如

"–– ––– .–. ... .  –.–. ––– –.. .".Split();
生成以下字符串数组

{string[10]} [0]: "––" [1]: "–––" [2]: ".–." [3]: "..." [4]: "." [5]: "" [6]: "–.–." [7]: "–––" [8]: "–.." [9]: "." {string[10]} [0]: "––" [1]: "–––" [2]: ".–." [3]: "..." [4]: "." [5]: "" [6]: "–.–." [7]: "–––" [8]: "–.." [9]: "."
假设你用一个空格分隔字母,用两个空格分隔单词。然后,您可以使用如下正则表达式测试字符串的格式是否正确

bool ok = Regex.IsMatch(entered, @"^(\.|-)+(\ {1,2}(\.|-)+)*$");
正则表达式解释:
^
是字符串的开头。
\.\124;-
是一个点(用
\
转义,因为点在正则表达式中有特殊含义)或(
)一个减号。
+
表示剩余内容的一次或多次重复(点或减号)。
\{1,2}
一个或两个空格(后跟点或负号
(\.\124;-)+
)。
*
重复空格后面的点或负号零次或多次。
$
是该行的结尾

可以在空格处使用

string[] parts = input.Split();
两个空格将创建一个空条目。这允许您检测单词边界。例如

"–– ––– .–. ... .  –.–. ––– –.. .".Split();
生成以下字符串数组

{string[10]} [0]: "––" [1]: "–––" [2]: ".–." [3]: "..." [4]: "." [5]: "" [6]: "–.–." [7]: "–––" [8]: "–.." [9]: "." {string[10]} [0]: "––" [1]: "–––" [2]: ".–." [3]: "..." [4]: "." [5]: "" [6]: "–.–." [7]: "–––" [8]: "–.." [9]: "."
谢谢-我现在正在尝试。您需要添加Regex类的名称空间;比如“使用System.Text.RegularExpressions”,是的,只是添加了它,效果非常好。谢谢你的大力帮助。我还想知道,如果我想忽略空白,只是在转换过程中删除它,我该怎么做;如果您的意思是在数据输入期间不允许空白,则可以将相关行更改为“bool isValid=Regex.IsMatch(排列,@“^[-.]+$”;”。然后,如果存在任何空白,它将打印出错误消息。我需要一些东西,这样,如果用户输入“-.-”即使他输入“-.-”(空格)-“我希望两者都正确地转换为相同的输出Hanks-我现在正在尝试。您需要添加Regex类的命名空间;比如“使用System.Text.RegularExpressions”,是的,只是添加了它,效果非常好。谢谢你的大力帮助。我还想知道,如果我想忽略空白,只是在转换过程中删除它,我该怎么做;如果您的意思是在数据输入期间不允许空白,则可以将相关行更改为“bool isValid=Regex.IsMatch(排列,@“^[-.]+$”;”。然后,如果存在任何空白,它将打印出错误消息。我想要一些东西,这样,如果用户输入“-.-”即使他输入“-”(空格)-“我想要两者都正确地转换为相同的输出这很好-我实际上会写下来供将来参考,但我想让用户输入“-.-”或“-”(空格)-“这两种方法将被视为相同的结果。如果您只想删除空格,可以使用
字符串。Replace
方法:
字符串结果=输入。Replace(“,”)你是最棒的!我将创建一个不同的问题,将您标记为答案。这很好-我将实际记录下来以供将来参考,但我希望用户输入“-.-”或“-.(空格)-”如果您只想删除空格,可以使用
String.Replace
方法:
String result=input.Replace(“,”)你是最棒的!我将创建一个不同的问题,将您标记为答案。