我已经在名为pdfText
的字符串中捕获了PDF文件的全文。
接下来,我循环遍历一个包含要在pdfText
- 字符串中找到/搜索的子字符串的数组。
其中一个子串是Invoice
。
我正在搜索的pdfText
和子字符串都转换为小写。
如果在pdfText
中找到至少一个子串,则布尔值设置为true。
现在,我有一个例子,pdtText
包含'...要开发票的净金额......'。这是文本中“发票”的唯一变体。
如果我使用
substring = "Invoice" ... pdfText.contains(substring.ToLower)
。
但在这种情况下我需要它返回false。我需要找到完全匹配。
另一个例子,如果pdfText
包含'......这是发票。请支付....要开票的净金额......'由于第一个发票匹配,布尔值应该设置为true,而不是第二个发票 - (非)匹配。
所以我要找的是在字符串Invoice
中找到子串pdfText
,并确保子字符串不是更长字invoiced, invoice-process etc.
的一部分。请注意,invoice.
应返回True
。
我相信这应该是可能的,但目前无法绕过它。 我可能需要使用正则表达式?
答案 0 :(得分:2)
RegEx将是一个很好的方法。
我不久前才启动RegEx,但我认为这样可以正常工作。
<强>正则表达式:强>
(invoice)[^a-zA-Z]
<强>解释强>
()
创建一个捕获组
invoice
查找发票匹配
[^a-zA-Z]
检查
示例:强>
示例:这是开票的
结果:无结果
示例:这是发票。
结果:匹配invoice.
捕获组1 = invoice
<强>实施强>
Dim m As Match = Regex.Match(pdfText.ToLower,"(invoice)[^a-zA-Z]")
' If successful, write the group.
If (m.Success) Then
Dim key As String = m.Groups(1).Value
Console.WriteLine(key)
End If
答案 1 :(得分:1)
@Mederic在https://stackoverflow.com/a/45587916/2326360
提出了一个稍有变化的RegEx使用Is Match
下的UiPath活动Programming->String
中的内置版。
使用当前设置在循环中使用它。
RegEx是:substring+"[^a-zA-Z]"
我已声明以下变量: