【发布时间】:2017-02-06 20:37:29
【问题描述】:
我希望我的函数遵循一些约定来检查我的票号是否需要格式化。
如果不符合约定,那么我想对票号进行一些更改。
票号19K3072216需要格式化成这个19-K3-07-002216,因为不满足以下条件。 我的函数应该执行以下操作。
- 检查前 2 位的值是否为 0 - 9(数字)
- 检查第 3 位的值是否为 A 到 Z
- 检查第 4 位的值是否为 0 - 9(数字)
- 检查第 5 位和第 6 位是否有日期值(例如 2 位年份 - 17、90、15 等)
- 检查接下来的 6 位数字,即第 7 - 12 位数字是否为数字。
由于票号19K3072216不符合上述条件,我希望我的函数将其格式化为如下所示19-K3-07-002216
字符串 strTicketNumber 应该返回格式化的票号 19-K3-07-002216
我的 vb.net 功能
Public Class Ticket_Code
Public Shared Sub main()
Dim strTicketNumber As String = FixTicketNumber("19K3072216")
End Sub
Public Shared Function FixCaseNumber(ByVal astrCaseNumber As String) As String
Dim strCaseNumber As String = Replace(astrCaseNumber, "-", "")
'Determine if ticket number is formatted
How do I do this?
'If ticket number is formatted add 2 zeros
'How do I do this?
'Else return unchanged
'If ticket number is already formatted, just returned the number (original number)
Return strCaseNumber
End Function
End Class
【问题讨论】:
-
您应该能够使用正则表达式来检查它是否已经匹配,否则这将是一个非常手动的过程,需要拆分输入、验证每个规则,然后连接最终的字符串。
-
你能给我举个例子来说明如何使用正则表达式吗?
-
您的年份值是介于 00-99 之间还是限制在过去 30 年之间?
-
如前所述,这将取决于一年中的更多细节,但这是一个与您的示例相匹配的简单示例
19-K3-07-002216:/^\d{2}-[A-Z]\d-\d{2}-\d{6}$您可以使用Regex.Match()查看是否输入通过。我不是正则表达式专家,所以它可能会更好,但这个有效
标签: vb.net