在 vb.net 中提供文本字段解析器的字符串
Posted
技术标签:
【中文标题】在 vb.net 中提供文本字段解析器的字符串【英文标题】:A string feeding a textfieldparser in vb.net 【发布时间】:2012-11-05 17:39:57 【问题描述】:在我问之前,我只想说我已经查过了,我就是想不通。 因此,我收到了一个网络电话,它返回了一个非常长的文本字符串,我需要将其拆分。我想使用 textfieldparser 但我不想将此字符串保存为文件,并且 textfieldparser 似乎都是关于文件或...流的,我不理解流。那么我如何将字符串输入其中呢?我可以将其转换为流吗?我意识到这可能非常简单,所以我为我的无知道歉。
非常感谢您的帮助!
【问题讨论】:
【参考方案1】:Textfieldparser 有一个使用 TextReader 的构造函数。 你有没有尝试过这样的事情:
Dim t As New FileIO.TextFieldParser(New System.IO.StringReader("thestringinside"))
您也可以查看www.filehelpers.net(我自己从未尝试过,但看起来很有希望 - 我绝不隶属于!)因为引擎还支持 ReadString 方法
【讨论】:
@Tim Schmelter:你可能是对的,但我看不出这里使用了哪个非托管资源,应该立即释放?我是 Jeffrey Richter 的“处理?不要!(通常)”态度的粉丝。并且调用 dispose(通过 using)无论如何都不会释放内存(为字符串分配)。TextReader
和 TextFieldParser
都实现了 IDisposable
。我想不只是为了好玩;)
@Tim Schmelter:你有没有检查过这两个类的 dispose 方法是做什么的?哎呀,我喜欢 Reflector ;) TFP 上的 Dispose 只在“流”(这是一个 Stringreader)上调用 close/dispose。 TextReader 上的 Dispose(boolean) 是一个空方法。那么调用它有什么用呢??
抱歉:在 STRINGreader 中的 Dispose 将基础字符串设置为 NULL。您是否总是将您使用的任何字符串设置为 NULL?在 GC 运行之前它不会释放任何内存,那么有什么好处呢?
它只是将StringReader
的底层字符串设置为null,而不是引用的字符串。如果原始字符串超出范围或为空,这对于允许 GC 释放字符串很有用。看看这里:Is it ok not to dispose a StringReader?以上是关于在 vb.net 中提供文本字段解析器的字符串的主要内容,如果未能解决你的问题,请参考以下文章