C# C文本框,最多允许一个点

C# C文本框,最多允许一个点,c#,textbox,C#,Textbox,我如何在C中创建一个允许最多一个的。圆点 因此,abcdef和abc.def将是有效的输入,而ab.cd.ef则不是 允许我的意思是,如果文本字段中已经有一个点,那么用户就不能输入一个点 Java有文档过滤器用于此目的,C中是否有类似的东西?我想这是用于验证用户输入。你应该创建一个按钮,告诉用户当他完成时,按下它,这样你就可以检查是否只有一个。在字符串中 假设: 将文本框命名为tb。让您的按钮单击事件处理程序为BtnOnClick 现在我们可以开始编写代码了。首先创建处理程序: private

我如何在C中创建一个允许最多一个的。圆点

因此,abcdef和abc.def将是有效的输入,而ab.cd.ef则不是

允许我的意思是,如果文本字段中已经有一个点,那么用户就不能输入一个点


Java有文档过滤器用于此目的,C中是否有类似的东西?

我想这是用于验证用户输入。你应该创建一个按钮,告诉用户当他完成时,按下它,这样你就可以检查是否只有一个。在字符串中

假设:

将文本框命名为tb。让您的按钮单击事件处理程序为BtnOnClick

现在我们可以开始编写代码了。首先创建处理程序:

private void BtnOnClick (object sender, EventArgs e) {

}
在处理程序中,需要循环遍历字符串并检查每个字符。您可以使用foreach进行以下操作:

int dotCount = 0;
string s = tb.Text;
if (s.StartsWith(".")) //starts with .
    //code to handle invalid input
    return;
if (s.EndsWith(".")) //ends with .
    //code to handle invalid input
    return;
foreach (char c in s) {
    if (c == '.') {
        dotCount++;
    }
    if (dotCount >= 2) { //more than two .
        //code to handle invalid input
        return;
    }
}
// if input is valid, this will execute
或者,可以使用查询表达式。但我认为你不太可能知道那是什么

string s = tb.Text;
if (s.StartsWith(".")) //starts with .
    //code to handle invalid input
    return;
if (s.EndsWith(".")) //ends with .
    //code to handle invalid input
    return;
var query = from character in s
            where character == '.'
            select character;
if (query.Count() > 1) {
    //code to handle invalid input
    return;
}
// if input is valid, this will execute

是的,有几种方法可以使用regex、foreach和string方法,但到目前为止,您尝试了哪些方法?您是否正在尝试找到验证电子邮件的方法?因为这是一种非常粗糙的方法,既不健壮也不友好。@JGreenwell你能给我指一种方法吗?@Claies不,不是电子邮件我知道@Scriptim您必须验证一个浮点数!是的,那是个打字错误。我纠正了它@安德烈莫尔顿