7

我写了一些代码。代码如下所示。第一部分是将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

第二部分(我测试了很多次,搜索和替换不起作用。我多次检查“TempText”是否包含字符串。“TempText”字符串中的“the_key_string”确实包含。我使用 QuickWatch 进行检查VB.net。但是,替换功能不起作用)

            Dim TextPath = C:xxxxxx
            TempText = ReadTextFile(TextPath)
            TempText.Replace("the_key_string", "replace_by_this_string")

请帮忙。我不知道我在哪里犯了错误

4

6 回答 6

11

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

TempText = TempText.Replace("the_key_string", "replace_by_this_string")

来自 MSDN:

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

于 2013-10-07T20:42:52.610 回答
4

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

TempText = TempText.Replace("the_key_string", "replace_by_this_string")

MSDN: String Data Type (Visual Basic):

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

于 2013-10-07T20:43:18.503 回答
1

您必须将值分配给某些东西,例如:

TempText = TempText.Replace("the_key_string", "replace_by_this_string")
于 2013-10-07T20:42:57.550 回答
1

这是执行字符串替换,但不会将结果放在任何地方:

TempText.Replace("the_key_string", "replace_by_this_string")

您需要将结果分配给某些东西:

TempText = TempText.Replace("the_key_string", "replace_by_this_string")
于 2013-10-07T20:43:08.533 回答
0

Replace 方法返回修改后的字符串。

你需要这样的东西:

Dim TextPath = C:xxxxxx
TempText = ReadTextFile(TextPath)
Dim ModifiedString as String
ModifiedString = TempText.Replace("the_key_string", "replace_by_this_string")
于 2013-10-07T20:43:59.723 回答
0

“这是一个字符串”如果你用“whatever”替换“string”,这个字符串应该是:“这是一个whatever”。所以你可以做的就是把它放在一个新的字符串中。如何?replace 方法返回一个字符串,所以很容易:) 看到这个:msdn

于 2013-10-07T20:46:45.677 回答