首页 > 解决方案 > 检查字符串中有一个日期并提取部分字符串

问题描述

我有数千行需要处理的文本以及我感兴趣的行,如下所示:

01/04/2019 09:35:41 - Test user (Additional Comments)

我目前正在使用此代码过滤掉所有其他行:

If InStr(FullCell(i), " - ") <> 0 And InStr(FullCell(i), ":") <> 0 And InStr(FullCell(i), "(") <> 0 Then

FullCell 是我正在处理的数组。

我知道这不是最好的方法。有没有办法检查字符串开头是否有日期,格式为 dd/mm/yyyy,然后在“-”和“(”符号之间提取用户名。

我玩了正则表达式,看看是否有帮助,但我的技能有限,无法在同一代码中同时实现 VBA 和正则表达式。

什么是最好的方法来做到这一点。

标签: regexexcelvbadateregex-lookarounds

解决方案


假设Fullcell(i)包含字符串,

If Left(Fullcell(i), 10) Like "##/##/####"

如果您有日期,将返回True(请注意,它不会区分dd/mm/yyyymm/dd/yyyy

Mid(Fullcell(i), InStr(Fullcell(i), " - ") + 2, InStr(Fullcell(i), " (") - InStr(Fullcell(i), " - ") - 2)

将返回用户名


推荐阅读