vba - 块查找器 - 类似功能
问题描述
我有一个名为 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
使用正则表达式而不是像这样会更好吗?......有没有像不起作用的原因?
解决方案
考虑这个 Sub 使用带有后期绑定的 RegExp 对象:
Sub testRegExp2(strS)
Dim regexOne As Object, Matches As Object, Match As Object
'Set regexOne = New RegExp
Set regexOne = CreateObject("VBScript.RegExp")
regexOne.Pattern = "[0-9]+Block[0-9]+-[0-9]+"
regexOne.Global = True
Set Matches = regexOne.Execute(strS)
For Each Match In Matches
If Not Match Like "###Block####-##" Then
Debug.Print "Wrong block number format identified: " & Match
Else
Debug.Print "Block number format acceptable: " & Match
End If
Next
End Sub
推荐阅读
- firebase - 如何使用云功能保护 Firebase 消息传递主题?
- matlab - 如何在热图中设置 x 轴值
- sql - 皱眉(错误)错误消息:“值不在预期范围内。” - 在 ListObjects.Add().QueryTable
- java - FragmentManager 无法在 androidx 中解析
- mysql - 最佳架构同时元素到用户和组
- typescript - 将对象数组中的所有对象推送到另一个对象数组
- python - 如果字符串在Python的列表中,如何替换文本中的字符串?
- html - 使用 CSS 从右到左 div 并在 5 秒后隐藏
- php - 车队推车在路线中使用中间件,但我在项目中找不到任何 $routemiddleware...甚至在 kernel.php 中也找不到...我在哪里可以找到它?
- java - 当我通过日期选择器和时间选择器选择日期和时间时,如何在 SQLite 数据库中存储日期和时间?