Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何验证字符串仅包含某些字符_C# - Fatal编程技术网

C# 如何验证字符串仅包含某些字符

C# 如何验证字符串仅包含某些字符,c#,C#,我正在为学校做一项作业: 我已经将一个字符串传递给了一个mutator,我需要验证它是否只包含空格、连字符或大小写字母 输出始终为“” 你能看出我做错了什么吗?有没有更聪明的方法?我是从我的导师那里得到的,但它不起作用。这是我的密码: public void setFirstName(string newFirstName { bool valid; valid = System.Text.RegularExpressions.Regex.IsMatch(newFirstN

我正在为学校做一项作业:

我已经将一个字符串传递给了一个mutator,我需要验证它是否只包含空格、连字符或大小写字母

输出始终为“”

你能看出我做错了什么吗?有没有更聪明的方法?我是从我的导师那里得到的,但它不起作用。这是我的密码:

public void setFirstName(string newFirstName

{

    bool valid;

    valid = System.Text.RegularExpressions.Regex.IsMatch(newFirstName, "^[- a-zA-Z]?$");

    if (valid)

    {

        firstName = newFirstName;

    }

        firstName = " ";

}
你需要另一个街区

public void setFirstName(string newFirstName)
{
    bool valid;
    valid = System.Text.RegularExpressions.Regex.IsMatch(newFirstName, "^[- a-zA-Z]*$");
    if (valid)
    {
        firstName = newFirstName;
    }
    else
    {
        firstName = " ";
    }
}
更新

您的正则表达式似乎也错了,它需要*来表示零或更多的发生,而不是?。 正确的正则表达式=>
^[-a-zA-Z]*$

单击此处查看工作小提琴=>

您需要其他块

public void setFirstName(string newFirstName)
{
    bool valid;
    valid = System.Text.RegularExpressions.Regex.IsMatch(newFirstName, "^[- a-zA-Z]*$");
    if (valid)
    {
        firstName = newFirstName;
    }
    else
    {
        firstName = " ";
    }
}
更新

您的正则表达式似乎也错了,它需要*来表示零或更多的发生,而不是?。 正确的正则表达式=>
^[-a-zA-Z]*$


单击此处查看working fiddle=>

作为RegEx的替代方案(如果您仍在学习C#,我不推荐使用),您可以使用LINQ和内置的基本字符串验证

在这种特殊情况下,
All
将检查数组中的每个元素(字符串是字符数组)是否与提供的谓词匹配,其中每个字符:

  • 必须是字母(大写或小写)或
  • 必须是破折号“-”或
  • 必须是一个空格“”

如果这些条件中的任何一个失败,那么结果将为false。

作为RegEx的替代方法(如果您仍在学习C#,我不推荐使用RegEx),您可以使用LINQ和内置的基本字符串验证

在这种特殊情况下,
All
将检查数组中的每个元素(字符串是字符数组)是否与提供的谓词匹配,其中每个字符:

  • 必须是字母(大写或小写)或
  • 必须是破折号“-”或
  • 必须是一个空格“”

如果这些条件中的任何一个失败,那么结果将为false。

您需要将您的
firstName=”“
包装在
else
分支中。
firstName=“”,无论
的有效结果是什么,在regex
表示“零或一”。您的意思是
*
表示“零或任何数字”(或者
+
表示至少一次)。您需要将
firstName=“”
包装在
else
分支中。
firstName=“”,无论
的有效结果是什么,在regex
表示“零或一”。您的意思是
*
表示“零或任何数字”(或者
+
表示至少一次)。此外,正则表达式不正确。。请看我对这个问题的评论。另外,正则表达式是不正确的。。见我对这个问题的评论。