Vb.net 字符串操作不一致性

Vb.net 字符串操作不一致性,vb.net,string,stringbuilder,Vb.net,String,Stringbuilder,这是一个更一般的问题。我正在读取文档并将其内容保存到字符串变量中。结果变量包含大约100万个字符(无清除)。然后,我的代码将搜索字符串,并提取关键字。然而,我被一个问题挂断了电话: 如果我将字符串直接传递给消息框,它将使用Mid显示内容: Messagebox.Show(Mid(searchString, startPos, endPos)) 但是,如果我首先将mid传递给字符串变量,则内容为空,messagebox不显示任何内容: Dim myString as String myStrin

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

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

Messagebox.Show(Mid(searchString, startPos, endPos))
但是,如果我首先将mid传递给字符串变量,则内容为空,messagebox不显示任何内容:

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的长度约为3700000个字符。当我找到indexOf时,第一个Messagebox中返回的值是455225。但是,如果我尝试使用Mid提取字符,则第二个messagebox为空

此外,尽管它声称是3700000个字符,但如果我在textString上创建messagebox,我只会看到大约6个字符的XML。正在搜索的文件是一个旧的.ppt文件,我知道我可以处理它,但我很困惑,计算机如何能够正确地找到我的搜索文本的索引,但却无法向我显示任何内容


思考?

这两者应该产生相同的结果。在调试器下运行有问题的版本时,会显示哪些参数值?代码在哪里?我同意jdigital,只要测试时三个变量相同,它应该产生相同的结果。您使用的是什么版本?当您完全忽略.ppt文件是二进制文件而不是文本文件这一事实时,就会发生这种情况。无论你读什么,都将包含零。MessageBox是引擎盖下的一个C函数,它在遇到零时停止显示文本。您必须改用Microsoft.Office.Interop.PowerPoint命名空间中的类。