You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SubString与IndexOf提取值时出现异常结果的问题

问题排查与修复方案

你的代码提取金额时带出了Net字样,核心原因是你假设金额后面会有空格作为结束标记,但目标文本中$29.00和后续的Net之间没有空格,导致IndexOf(" ", vIndexStart)找到的是Net之后的空格,提取范围错误包含了 Net。

以下是三种针对性修复方案:

方案1:遍历字符匹配金额边界

从起始位置开始,只保留数字、$和.字符,遇到其他字符就停止,精准截取金额:

vIndexStart = vOutput.IndexOf(vNet) + vNet.Length
If vIndexStart < 0 Then
    Return Json("<p>There was an Error with " & vNet & "not appearing in the invoice text</p>" & vCheck)
End If

' 定位第一个非金额相关字符的索引
vIndexEnd = vIndexStart
While vIndexEnd < vOutput.Length AndAlso (Char.IsDigit(vOutput(vIndexEnd)) OrElse vOutput(vIndexEnd) = "$"c OrElse vOutput(vIndexEnd) = "."c)
    vIndexEnd += 1
End If

If vIndexEnd <= vIndexStart Then
    Return Json("<p>Failed to extract valid Net amount</p>" & vCheck)
End If

Dim vNetString As String = vOutput.Substring(vIndexStart, vIndexEnd - vIndexStart)
SB.Append("<p>Amount Net - " & vNetString & "</p>")

方案2:正则表达式提取(更简洁稳定)

利用正则直接匹配Net Total 后的金额格式,适用于固定格式的发票文本:

Dim regex As New Regex(vNet & "(\$[\d\.]+)")
Dim match As Match = regex.Match(vOutput)
If match.Success Then
    Dim vNetString As String = match.Groups(1).Value
    SB.Append("<p>Amount Net - " & vNetString & "</p>")
Else
    Return Json("<p>There was an Error with " & vNet & " not appearing or invalid amount format</p>" & vCheck)
End If

方案3:针对当前文本结构定位Net位置

如果确定金额后紧跟Net,直接用Net的起始索引作为结束标记:

vIndexStart = vOutput.IndexOf(vNet) + vNet.Length
If vIndexStart < 0 Then
    Return Json("<p>There was an Error with " & vNet & "not appearing in the invoice text</p>" & vCheck)
End If

vIndexEnd = vOutput.IndexOf("Net", vIndexStart)
If vIndexEnd < 0 Then
    Return Json("<p>Failed to find expected 'Net' after amount</p>" & vCheck)
End If

' Trim去除可能存在的空白字符
Dim vNetString As String = vOutput.Substring(vIndexStart, vIndexEnd - vIndexStart).Trim()
SB.Append("<p>Amount Net - " & vNetString & "</p>")

内容的提问来源于stack exchange,提问作者gchq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 19:03:16