【问题标题】:Calling a variable from the data retrieved in a textfile从文本文件中检索的数据中调用变量
【发布时间】:2013-07-11 21:11:36
【问题描述】:

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

我的文本文件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 & "文本

我从来没有尝试过从文本文件中调用变量,有什么办法吗?

【问题讨论】:

    标签: vb.net text-files filestream streamreader


    【解决方案1】:

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

    您不应将文本文件视为源代码的扩展。文本文件只是将原始数据存储到磁盘的一种方式。数据不会“运行”。数据本身并没有做任何事情。数据无法“访问”您的源代码。如果您希望程序对数据做某事或对数据做某事,您的程序必须完成所有工作。

    因此,如果您想做类似的事情,您需要通过您编写的代码解析和操作数据。执行此类任务的难易程度完全取决于您的文件格式解析和使用的难度。您选择的格式相当困难,这就是其他人建议 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
    

    【讨论】:

    • 非常感谢它帮助了我很多时间。我现在可以睡个好觉了。这已经困扰我好几天了。你救了我。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多