1

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

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

我要显示" & first & "and" & 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 & "and" & second & "文本

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

4

2 回答 2

0

描述的解决方案是使用正则表达式。有关更多信息,请查看以下链接:

Visual Basic (2010) - 在嵌入的文本文件中使用变量?

于 2013-07-11T11:57:01.637 回答
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
于 2013-07-11T12:53:31.933 回答