从文本文件中检索的数据中调用变量

时间:2013-07-11 11:48:04

标签: vb.net text-files filestream streamreader

我想从我的文本文件中引用我在代码中声明的变量值。我希望文本文件中引用的变量被适当的值替换,具体取决于当前代码中的变量,但我遇到了问题。

我的文本文件post.txt的内容是:

  

我要显示“& first&”和“& second&”文字

这是我的代码:

Dim Test As String
Dim first As String = "first word"
Dim second As String = "second word"

Dim pStream As New System.IO.FileStream("post.txt", IO.FileMode.Open)
Dim pReader As New System.IO.StreamReader(pStream)

Test = pReader.ReadLine()

pStream.Close()
pReader.Close()

SampleTextbox.Text = Test

我希望我的SampleTextbox显示以下内容:

  

我要显示第一个单词和第二个单词文本

但是,相反,它仍然显示从文本文件中检索到的内容,即:

  

我要显示“& first&”和“& second&”文字

我从未尝试过调用文本文件中的变量,有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

所描述的解决方案是使用Regex。有关详细信息,请查看以下链接:

Visual Basic (2010) - Using variables in embedded text files?

答案 1 :(得分:0)

简单的答案是“不”。变量不能那样工作。变量只是代码中的一种方式,可以方便地引用存储数据的内存位置。将源代码构建到程序集中时,原始源代码甚至不再存在,作为生成的程序集的一部分。

您不应将文本文件视为源代码的扩展。文本文件只是将原始数据存储到磁盘的一种方法。数据没有“运行”。数据本身没有任何作用。数据没有“访问”您的源代码。如果您希望程序对数据执行某些操作,则必须执行所有工作。

因此,如果你想做类似的事情,你需要通过你编写的代码解析和操作数据。执行此类任务的难易程度完全取决于您的文件格式解析和使用的难度。您选择的格式相当困难,这就是其他人建议使用RegEx的原因。 RegEx为您提供了解析复杂数据的强大功能。但是,如果您可以控制数据的格式,那么将文件格式更改为更易于使用的方式将是一种更好的方法。您可以使用XML之类的标准格式。使用XML,您可以根据需要选择以多种不同方式格式化数据。例如,您可以将其格式化为:

<?xml version="1.0" encoding="utf-8"?>
<document>
I am gonna display <first/> and <second/> text.
</document>

或者这个:

<?xml version="1.0" encoding="utf-8"?>
<document>
I am gonna display <var name="first"/> and <var name="second"/> text.
</document>

或者这个:

<?xml version="1.0" encoding="utf-8"?>
<document>
I am gonna display <var>first</var> and <var>second</var> text.
</document>

然后,您可以使用.NET框架中的任何XML工具来加载XML文档并使用适当的值替换可变元素。事实上,你甚至可以使用XSLT,这很酷,但我离题了。

但是,我怀疑,根据您的需要,更改格式以使用简单的占位符(如下所示)可能会更有意义:

  

我将显示%FIRST%和%SECOND%文字。

然后,您只需将字符串中的占位符替换为其变量值,如下所示:

Dim first As String = "first word"
Dim second As String = "second word"
Dim data As String = System.IO.File.ReadAllText("post.txt")
data = data.Replace("%FIRST%", first)
data = data.Replace("%SECOND%", second)
SampleTextbox.Text = data