C# 如何验证字符串仅包含某些字符
我正在为学校做一项作业: 我已经将一个字符串传递给了一个mutator,我需要验证它是否只包含空格、连字符或大小写字母 输出始终为“” 你能看出我做错了什么吗?有没有更聪明的方法?我是从我的导师那里得到的,但它不起作用。这是我的密码:C# 如何验证字符串仅包含某些字符,c#,C#,我正在为学校做一项作业: 我已经将一个字符串传递给了一个mutator,我需要验证它是否只包含空格、连字符或大小写字母 输出始终为“” 你能看出我做错了什么吗?有没有更聪明的方法?我是从我的导师那里得到的,但它不起作用。这是我的密码: public void setFirstName(string newFirstName { bool valid; valid = System.Text.RegularExpressions.Regex.IsMatch(newFirstN
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=“”始终执行code>,无论的有效结果是什么,在regex中表示“零或一”。您的意思是*
表示“零或任何数字”(或者+
表示至少一次)。您需要将firstName=“”
包装在else
分支中。firstName=“”始终执行code>,无论的有效结果是什么,在regex中表示“零或一”。您的意思是*
表示“零或任何数字”(或者+
表示至少一次)。此外,正则表达式不正确。。请看我对这个问题的评论。另外,正则表达式是不正确的。。见我对这个问题的评论。