Абстракция - ваш друг, всегда полезно разбить их на свои личные функции, когда вы можете. Вы можете поместить свой код в функцию и вызвать что-то вроде ExtractUsername
.
Ниже я привел пример этого и решил использовать подход RegExp (позднее связывание), но вы также можете использовать строковые функции, как в примерах выше.
Эта функция возвращает имя пользователя, если находит шаблон, который вы упомянули выше, в противном случае возвращает пустую строку.
Private Function ExtractUsername(ByVal SourceString As String) As String
Dim RegEx As Object
Set RegEx = CreateObject("vbscript.regexp")
'(FIRST GROUP FINDS THE DATE FORMATTED AS DD/MM/YYY, AS WELL AS THE FORWARD SLASH)
'(SECOND GROUP FINDS THE USERNAME) THIS WILL BE SUBMATCH 1
With RegEx
.Pattern = "(^\d{2}\/\d{2}\/\d{4}.*-)(.+)(\()"
.Global = True
End With
Dim Match As Object
Set Match = RegEx.Execute(SourceString)
'ONLY RETURN IF A MATCH WAS FOUND
If Match.Count > 0 Then
ExtractUsername = Trim(Match(0).SubMatches(1))
End If
Set RegEx = Nothing
End Function
Шаблон регулярного выражения сгруппирован в три части: дату (и косую черту), имя пользователя и открывающие скобки. Что вас интересует, так это имя пользователя, которое в SubMatch будет номером 1.
Regexr - это полезный сайт для практики регулярных выражений, который может показать вам немного больше о том, что делает шаблон, с которым я работал.
Обратите внимание, что использование регулярных выражений может привести к проблемам с производительностью, и вы должны проверить его на соответствие строковым функциям, чтобы увидеть, что лучше всего подходит для вашей ситуации.