0

这是一个更普遍的问题。我正在阅读一个文档并将其内容保存到一个字符串变量中。结果变量包含大约 100 万个字符(无清理)。然后我的代码将搜索字符串,并提取关键词。但是,我挂断了一个问题:

如果我将字符串直接传递给消息框,它将使用 Mid 向我显示内容:

Messagebox.Show(Mid(searchString, startPos, endPos))

但是,如果我首先将 mid 传递给字符串变量,则内容为空,并且消息框不显示任何内容:

Dim myString as String
myString = Mid(searchString, startPos, endPos)
Messagebox.Show(myString)

当我使用 .substring 和使用 stringbuilder 时,会发生同样的效果。

有谁知道为什么会这样?我假设在分配期间发生了一些事情,但我不确定丢失了什么?

这是一段代码:

    searchPos = textString.IndexOf(searchText, searchPos, StringComparison.OrdinalIgnoreCase)

    MessageBox.Show(searchPos)

    MessageBox.Show(Mid(textString, searchPos, 100))

因此,不一致之处在于:textString 的长度约为 3,700,000 个字符。当我找到 indexOf 时,第一个 Messagebox 中返回的值是 455,225。但是,如果我尝试使用 Mid 提取字符,则第二个消息框是空白的。

此外,虽然它声称有 3,700,000 个字符,但如果我在 textString 上创建一个消息框,我只会看到大约 6 个似乎是 XML 的字符。正在搜索的文件是一个旧的 .ppt 文件,我知道我可以解决它,但我对计算机如何正确找到我的 searchText 的索引感到困惑,但随后无法显示任何内容。

想法?

4

0 回答 0