在VB.NET中,将字符串传递给TextFieldParser。

4
在我提问之前,我想说一句话,我已经查过了,但是我还是搞不明白。所以,我得到了一个返回非常长的文本字符串的网络调用,我需要将其拆分。我想使用textfieldparser,但我不想将此字符串保存为文件,而textfieldparser似乎都是关于文件或流的,我不理解流。那么我该如何将字符串传递给它呢?我能将它转换为流吗?我意识到这可能非常简单,因此对我的无知表示歉意。
非常感谢您的帮助!
1个回答

11

Textfieldparser有一个接受TextReader对象的构造函数。你尝试过这样做吗:

Dim t As New FileIO.TextFieldParser(New System.IO.StringReader("thestringinside"))

您也可以查看www.filehelpers.net(我从未尝试过,但看起来很有前途 - 我与其无任何关联!),因为该引擎还支持一个ReadString方法。

@Tim Schmelter:你可能是对的,但我看不出这里使用了哪些未托管资源应该立即释放?而且我是Jeffrey Richter的“Dispose?Dont!(通常)”态度的粉丝。通过_using_调用dispose也无法释放为字符串分配的内存。 - igrimpe
1
无论是TextReader还是TextFieldParser,都实现了IDisposable接口。我猜这不仅仅是为了好玩;) - Tim Schmelter
@Tim Schmelter:你有没有检查过这两个类的dispose方法是做什么的?哎呀,我喜欢Reflector ;) TFP上的Dispose只调用“stream”(即Stringreader)的close / dispose。TextReader上的Dispose(boolean)是一个空方法。那么它怎么可能有用呢? - igrimpe
抱歉:在STRINGreader中使用Dispose会将底层字符串设置为NULL。您是否总是将使用的任何字符串设置为NULL?它不会在GC运行之前释放任何内存,那么有什么好处呢? - igrimpe
1
它只是将StringReader的底层字符串设置为null,而不是引用字符串。这对于允许GC释放原始字符串(如果原始字符串超出范围或为空)非常有用。在这里看一下:不释放StringReader是否可以? - Tim Schmelter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接