【问题标题】:How to check user input for correct formatting如何检查用户输入的格式是否正确
【发布时间】:2010-06-09 16:51:12
【问题描述】:

这就是我目前的想法

private void CheckFormatting()
{
    StringReader objReaderf = new StringReader(txtInput.Text);
    List<String> formatTextList = new List<String>();

     do
     {
         formatTextList.Add(objReaderf.ReadLine());
     } 
     while (objReaderf.Peek() != -1);

     objReaderf.Close();
     for (int i = 0; i < formatTextList.Count; i++)
     {

     } 
}

它的设计目的是检查用户是否以 Gxx:xx:xx:xx JGxx 格式输入了他们的信息,其中“x”可以是任何整数。

如您所见,用户将他们的数据输入到多行文本框中。然后我把这些数据输入到一个列表中。下一部分是我卡住的地方。我创建了一个 for 循环来逐行遍历列表,但我想我还需要逐个字符地遍历每一行。我该怎么做呢?还是有更快的方法?

提前致谢

【问题讨论】:

标签: c# regex winforms


【解决方案1】:

试试这个。

    if (!System.Text.RegularExpressions.Regex.IsMatch("your_text", "G[0-9]{2}:[0-9]{2}:[0-9]{2}:[0-9]{2} JG[0-9]{2}"))
    {
        //Error!
    }

【讨论】:

  • 好的,我需要对其进行测试,但如果 (Regex.IsMatch(formatTextList[i], "G[0-9]{2}:[0-9]{2 }:[0-9]{2}:[0-9]{2} JG[0-9]{2"));
  • 抛出了什么异常?您的方法 WriteToFile 正在抛出异常。
  • 不,该方法没有抛出异常,我之前已经测试过。这是一个构建错误。它不会让我使用“其他”一词。如果我把它拿出来,那么就没有构建错误。但我需要“其他”部分才能让应用程序执行我想要的操作。
  • 我得到无效的表达术语“else”。但我看不出有什么不妥
【解决方案2】:

正则表达式是最快的方法。

【讨论】:

  • 我对 C# 很陌生,所以恐怕这对我来说毫无意义。对不起。能详细点吗?
  • 正则表达式就像文本格式的简写。任何给定的输入要么匹配给定的正则表达式,要么不匹配。日期、社会安全号码等有正则表达式。.net 有一些正则表达式支持。请参阅以下链接并尝试使用 Google:en.wikipedia.org/wiki/Regular_expressions
【解决方案3】:

使用正则表达式 在您的情况下, G\d\d:\d\d:\d\d:\d\d:JG\d\d 应该可以工作(没有测试) 使用 using System.Text.RegularExpressions 命名空间

【讨论】:

  • 你能在一个例子中使用一个,以便我知道它应该是什么样子吗?
  • 啊,对不起,这是方法: System.Text.RegularExpressions.Regex.IsMatch(your_string, @"G\d\d:\d\d:\d\d:\d\ d:JG\d\d");这会返回一个布尔值
【解决方案4】:

最佳做法是在用户输入数据时验证用户输入,并明确输入设计中应采用的格式。

您可以为每个由 : 分隔的数字部分添加一系列文本框,然后验证每个文本框的数值。

我猜这是一个 asp.net 页面? 如果是,那么您可以在客户端和服务器上使用 asp.net 验证器。

<asp:textbox id="textbox1" runat="server"/>
<asp:RegularExpressionValidator id="valRegEx" runat="server"
    ControlToValidate="textbox1"
    ValidationExpression="[0-9]*"
    ErrorMessage="* Your entry is not a valid number."
    display="dynamic">*
</asp:RegularExpressionValidator>

【讨论】:

  • 哦,是的,我已经在文本框上方明确说明了它应该采用的格式,但是你知道有些人就是不会阅读它,然后尖叫并抱怨我出错了,所以有一个安全网很好。不,它不是 asp.net。它是一个基于 Windows 的应用程序,用于存储、更新和查看数据。它基本上是一个加快数据输入的应用程序。
  • ok.. 我知道 winforms 有自己的一组验证器,但从未使用过它们。您仍然可以应用类似的解决方案..您还可以为每个框覆盖 OnKeyDown,并拒绝任何非数字字符..
猜你喜欢
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 2016-04-03
  • 1970-01-01
  • 2021-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多