Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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# 4.0 在属性设置器中使用正则表达式_C# 4.0 - Fatal编程技术网

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个问题的答案。