【发布时间】:2020-07-21 22:14:51
【问题描述】:
我有一个名为 strBlockText 的大字符串(超过 255 个字符)。该字符串包括随机文本和块号。块号应采用###Block####-## 格式(IE:245Block6533-56),但有时有人在文本中输入错误的块号格式 - 例如##Block####- ## 或 ###Block###-## 或 ##Block###-##...等。
**注意,这仅适用于纯文本。
我想编写一个函数,它能够声明“识别出错误的块编号格式”。当块号被胖手指时。
这是我用作示例的文本:
这是一个测试,我们需要弄清楚为什么它不起作用。 24Block1234-23 这是一个测试,我们需要弄清楚为什么会这样 不工作。 245Block4234-14 这是一个我们需要计算的测试 找出为什么这不起作用。这是一个测试 245Block6533-56 我们 需要弄清楚为什么这不起作用。
这是代码......我觉得应该可以,但不是:
Dim strBlockText As String
Dim strBlockCheck As String
If (((strBlockText Like "*##Block####-##*") or _
(strBlockText Like "*###Block###-##*") or _
(strBlockText Like "*##Block###-##*")) And _
(Not strBlockText Like "*###Block####-##*")) Then
strBlockCheck = "Wrong block number format identified."
Else
strBlockCheck = "Block number format acceptable."
End If
为此使用正则表达式而不是 like 会更好吗?...有 like 不起作用的原因吗?
【问题讨论】:
-
你的测试字符串包含
This is a Test that 245Block6533-56,所以你的字符串是就像*###Block####-##*——所以你的代码接受它。使用正则表达式并迭代匹配是要走的路 -
Regex 肯定会更好
-
为什么将数据输入到复杂的字符串中,而不仅仅是离散值 - 每个值输入的记录?可以使用 InputMask。
-
我以前没有玩过输入掩码。这段文字的输入就像一篇文章,但有时我的用户会输入错误的内容。
标签: vba ms-access regexp-like