Vb.net 如何转换文本框“年份日期”值以检查它是否只有两位数字?

Vb.net 如何转换文本框“年份日期”值以检查它是否只有两位数字?,vb.net,winforms,Vb.net,Winforms,我遇到的问题是,只能在year字段中插入两位数字,我想知道是否可以在按下按钮时插入一个值为2017的字符串,并且只能插入17 我曾尝试使用CONTAINS属性检查它是否只有数字,但现在我有点卡住了。您可以使用字符串/子字符串概念 Module DateSplit Sub Main() Dim literal As String = "2017" Dim substring As String = literal.Substring(2) Console

我遇到的问题是,只能在
year
字段中插入两位数字,我想知道是否可以在按下按钮时插入一个值为
2017
的字符串,并且只能插入
17


我曾尝试使用
CONTAINS
属性检查它是否只有数字,但现在我有点卡住了。

您可以使用字符串/子字符串概念

Module DateSplit
    Sub Main()
      Dim literal As String = "2017"
      Dim substring As String = literal.Substring(2)
      Console.WriteLine("Substring: {0}", substring)
   End Sub
End Module
我没有测试这段代码,但应该输出17

另一种方法是将日期强制转换为字符串并创建一个字符数组,然后您可以访问该元素并将其转换回数字(如果您愿意)

Dim dateToSplit As Integer = 2017
Dim strDate As String = dateToSplit.ToString()

Dim charArr() AS Char = strDate.ToCharArray()

可以使用字符串/子字符串概念

Module DateSplit
    Sub Main()
      Dim literal As String = "2017"
      Dim substring As String = literal.Substring(2)
      Console.WriteLine("Substring: {0}", substring)
   End Sub
End Module
我没有测试这段代码,但应该输出17

另一种方法是将日期强制转换为字符串并创建一个字符数组,然后您可以访问该元素并将其转换回数字(如果您愿意)

Dim dateToSplit As Integer = 2017
Dim strDate As String = dateToSplit.ToString()

Dim charArr() AS Char = strDate.ToCharArray()

假设您的用户在文本框中输入如下日期:
01/01/2017

dim dateFromTextbox = yourTextbox.Text ' ==> 01/01/2017
dim lastTwoDigits = Right(dateFromTextbox, 2)  ' ==> 17

假设您的用户在文本框中输入如下日期:
01/01/2017

dim dateFromTextbox = yourTextbox.Text ' ==> 01/01/2017
dim lastTwoDigits = Right(dateFromTextbox, 2)  ' ==> 17
你可以用正则表达式

Private Function returnLastTwo(input As Integer) As Integer
    Dim matchYearString As String = "(?:(\d\d)(?:(\d\d))?)"
    Dim output As Integer
    If CStr(input).Length = 4 Then
        output = Text.RegularExpressions.Regex.Match(CStr(input), matchYearString).Groups(2).Value
    ElseIf CStr(input).Length = 2 Then
        output = Text.RegularExpressions.Regex.Match(CStr(input), matchYearString).Groups(1).Value
    Else
        Throw New Exception("Check input")
    End If
    Return output
End Function
你可以用正则表达式

Private Function returnLastTwo(input As Integer) As Integer
    Dim matchYearString As String = "(?:(\d\d)(?:(\d\d))?)"
    Dim output As Integer
    If CStr(input).Length = 4 Then
        output = Text.RegularExpressions.Regex.Match(CStr(input), matchYearString).Groups(2).Value
    ElseIf CStr(input).Length = 2 Then
        output = Text.RegularExpressions.Regex.Match(CStr(input), matchYearString).Groups(1).Value
    Else
        Throw New Exception("Check input")
    End If
    Return output
End Function


我看到有控制台。Writeline,也就是说你做这个是为了控制台应用程序。但如果winforms使用的不是这个,我会尝试并更改您的答案。谢谢你的时间!实现拆分后,如何处理子字符串与此无关,我只包含了控制台输出,以便您可以查看结果是否符合您的要求。这完全是你的事,但我不会分割日期并使用两位数的日期,除非我真的必须…在我的情况下,我真的需要它。正如我所说,在我国,如果按2位数的年份和2位数的月份进行过滤,则车牌会被删除。如果是这样的话,我有两个关于这两个变量的文本框,然后我会把它们都设置成这个MM\YY。你介意编辑你的答案并删除控制台吗?writeline(…)并插入这段代码?它按我的要求工作!非常感谢你的帮助。“TextBox.Text=substring”@UlugToprak它不输出17。Tiago,
控制台。WriteLine
写入输出窗口。调试时,您可以在其中一个选项卡中看到这一点。我在那里看到了Console.Writeline,这意味着您是为Console应用程序制作的。但如果winforms使用的不是这个,我会尝试并更改您的答案。谢谢你的时间!实现拆分后,如何处理子字符串与此无关,我只包含了控制台输出,以便您可以查看结果是否符合您的要求。这完全是你的事,但我不会分割日期并使用两位数的日期,除非我真的必须…在我的情况下,我真的需要它。正如我所说,在我国,如果按2位数的年份和2位数的月份进行过滤,则车牌会被删除。如果是这样的话,我有两个关于这两个变量的文本框,然后我会把它们都设置成这个MM\YY。你介意编辑你的答案并删除控制台吗?writeline(…)并插入这段代码?它按我的要求工作!非常感谢你的帮助。“TextBox.Text=substring”@UlugToprak它不输出17。Tiago,
控制台。WriteLine
写入输出窗口。调试时,您可以在其中一个选项卡中看到这一点。很可能您可以使用“验证”事件强制执行您喜欢的规则。您需要添加一个标记来进一步定义您的环境,例如WinForms或WPF或???永远不要使用两位数的日期。在这种情况下,我必须有一个两位数的值,因为在我的国家,汽车的年份是以两位数计量的,例如月\年。如果是这样,您将有04\17。希望它能解释我希望它是怎样的。@rheitzman我目前正在使用winforms。此文本框将有一个月份的concat,因此用户不会根据我国的车牌格式输入错误的数据。提前谢谢!即使给出了下面所有的高科技答案,我仍然会使用“验证”——将两个控件挂接到同一个事件,并使用sender.name作为逻辑流。当两者都存在时,尝试解析到某个日期,成功后将两位数的值插入相应的框中或通知用户。很可能您可以使用“验证”事件强制执行您喜欢的规则。您需要添加一个标记来进一步定义您的环境,例如WinForms或WPF或???永远不要使用两位数的日期。在这种情况下,我必须有一个两位数的值,因为在我的国家,汽车的年份是以两位数计量的,例如月\年。如果是这样,您将有04\17。希望它能解释我希望它是怎样的。@rheitzman我目前正在使用winforms。此文本框将有一个月份的concat,因此用户不会根据我国的车牌格式输入错误的数据。提前谢谢!即使给出了下面所有的高科技答案,我仍然会使用“验证”——将两个控件挂接到同一个事件,并使用sender.name作为逻辑流。当两者都存在时,尝试解析到一个日期,成功后将两位数的值插入相应的框中或通知用户。
“Public重载只读属性权限为整数”
。在
右侧
property@TiagoTurella在这种情况下,您需要查看Microsoft.VisualBasic.Right(dateFromTextbox,2)来修复该错误。老实说,他的方法已经过时了,还有更好的方法可以使用。这仍然是一个答案,我会证明它是一个好的答案。因为它也很好用!提前谢谢@Nicholas V.@TiagoTurella没问题。我承认这是我的一个小小的解释。我只是想突出显示vb.net中可用的
Right()
函数。祝你好运<代码>“公共重载只读属性权限为整数”。在
右侧
property@TiagoTurella在这种情况下,您需要查看Microsoft.VisualBasic.Right(dateFromTextbox,2)来修复该错误。老实说,他的方法已经过时了,还有更好的方法