1

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

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

谢谢!

4

2 回答 2

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
}
于 2013-01-28T17:40:03.763 回答
2

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

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

正则表达式解释:
^是字符串的开头。
\.|-是一个点(转义,\因为点在 Regex 中具有特殊含义)或 ( |) 一个减号。
+表示剩余部分的一个或多个重复(点或减号)。
\ {1,2}一或两个空格(它们后面又是点或减号(\.|-)+)。
*重复空格后跟点或减号零次或多次。
$是行的结尾。

您可以在空格处拆分字符串

string[] parts = input.Split();

两个空格将创建一个空条目。这允许您检测单词边界。例如

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

产生以下字符串数组

{字符串[10]}
    [0]:“--”
    [1]:“————”
    [2]:“.-.”
    [3]:“……”
    [4]:“。”
    [5]:“”
    [6]:“–.–.”
    [7]:“————”
    [8]:“-..”
    [9]:“。”
于 2013-01-28T17:57:11.003 回答