C# 4.0 在属性设置器中使用正则表达式
我需要知道如何组合属性和正则表达式。这里是酒店:C# 4.0 在属性设置器中使用正则表达式,c#-4.0,C# 4.0,我需要知道如何组合属性和正则表达式。这里是酒店: public string NameFormal { get {return nameFormal;} set { nameFormal = value; } } 我想使用setter使用我已经拥有的regex模式来验证输入。我可以编写一个单独的bool函数来确定匹配的是/否。但是,在返回字符串的属性中如何实现这一点呢?谢谢你的帮助 我正
public string NameFormal
{
get {return nameFormal;}
set
{
nameFormal = value;
}
}
我想使用setter使用我已经拥有的regex模式来验证输入。我可以编写一个单独的bool函数来确定匹配的是/否。但是,在返回字符串的属性中如何实现这一点呢?谢谢你的帮助
我正在使用VS2010 假设您的意思是,在setter中设置正则表达式之前,要根据正则表达式检查该值
public string NameFormal
{
get {return nameFormal;}
set
{
string pattern = "^\\d{3}-\\d{3}-\\d{4}$"; //input your regex here
if (Regex.IsMatch(value, pattern))
{
nameFormal = value;
}
else
{
//didn't match
}
}
}
在setters中放入这样的逻辑时要小心,但是,当设置属性时,它可能会变得混乱,并且会自动失败。我建议抛出或使用一些东西来提醒用户/程序员设置此变量失败。谢谢,Kevin。是的,在setter中设置值之前,我想检查值与正则表达式。也许我需要用bool函数验证用户的表单输入,然后用干净的输入单独调用setter?否则,正如您所注意到的,该属性实际上不适合与用户进行布尔“是/否”交互。@user1695788从长远来看,这种方法可能会减少您的麻烦。明白了。setter仍然适用于纠正用户输入,而无需与用户进行任何交互,如重新格式化电话号码。非常感谢。顺便说一下,答案旁边有一个小复选标记,你可以检查一下这是否解决了你的问题。我只是注意到你没有接受任何有9个问题的答案。