如何在VB.net中的字符串替换功能不起作用?

Mar*_*rco 6 vb.net

我写了一些代码.代码如下所示.第一部分是将html读入字符串格式.第二部分是搜索字符串中的标记并用其他字符串替换字符串.

第一部分(我测试了很多次,它工作正常)

Public Function ReadTextFile(ByVal TextFileName As String) As String
    Dim TempString As String
    Dim StreamToDisplay As StreamReader
    StreamToDisplay = New StreamReader(TextFileName)
    TempString = StreamToDisplay.ReadToEnd
    StreamToDisplay.Close()
    Return TempString
End Function
Run Code Online (Sandbox Code Playgroud)

第二部分(我测试了很多次,搜索和替换不起作用.我多次检查过"TempText"包含字符串."the_key_string"在"TempText"字符串内部.我通过使用QuickWatch检查它VB.net.但是,替换功能不起作用)

            Dim TextPath = C:xxxxxx
            TempText = ReadTextFile(TextPath)
            TempText.Replace("the_key_string", "replace_by_this_string")
Run Code Online (Sandbox Code Playgroud)

请帮忙.我不知道我犯了什么错误

Mar*_*zek 9

String.Replace返回新字符串而不是修改源字符串.您必须将其分配回您的变量:

TempText = TempText.Replace("the_key_string", "replace_by_this_string")
Run Code Online (Sandbox Code Playgroud)

来自MSDN:

返回一个新字符串,其中当前实例中所有出现的指定字符串都替换为另一个指定的字符串.


Tim*_*ter 5

字符串是不可变的,这意味着一旦创建它们就无法修改它们。因此,您必须创建一个新变量并将其分配给您的字符串变量:

TempText = TempText.Replace("the_key_string", "replace_by_this_string")
Run Code Online (Sandbox Code Playgroud)

MSDN String Data Type (Visual Basic)::

一旦将字符串分配给 String 变量,该字符串就是不可变的,这意味着您无法更改其长度或内容。当您以任何方式更改字符串时,Visual Basic 都会创建一个新字符串并放弃前一个字符串。然后 String 变量指向新字符串。