Я хочу разрешить пользователям вводить время в текстовом поле с маской, а затем проверять это время и преобразовывать его при необходимости для последующего сохранения.
Я попробовал метод проверки времени с использованием только регулярных выражений, но, честно говоря, не смог найти очень подробных ответов. Я решил просто разделить строку, введенную пользователем, на ее базовые компоненты, а затем преобразовать куски времени в целые числа для удобства сравнения.
'' '
Public Function CreateTimeString(TheTime As String, TheSuffix As String) As String 'wip
Dim Hour As String = "00"
Dim Minute As String = "00"
Dim inthour As Integer
Dim intminute As Integer
Dim pattern As String = "(?<hour>\d*?):(?<minute>\d*?)"
For Each m As Match In Regex.Matches(TheTime, pattern)
Hour = m.Groups("hour").Value
Minute = m.Groups("minute").Value
Next
inthour = Convert.ToInt32(Hour)
intminute = Convert.ToInt32(Minute)
TxtMeals.Text = Hour & ":" & Minute
End Function
'' '
Ошибка при попытке конвертировать Минутную строку в целое число. Комментируя это и тестирование показывает, что Час был успешно преобразован. Похоже, что минута не может быть найдена.
Пример строки:
12:12
1:23
4:55
10:45
Кроме того, если я изменю шаблон, добавив пробел непосредственно перед последней кавычкой, ни то, ни другое не будет найдено, и я хотел бы знать, почему.