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

时间:2013-10-07 20:41:04

标签: vb.net

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

第1部分(我测试了很多次,效果很好)

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”是否包含字符串。“the_key_string”在“TempText”字符串内部。我通过检查它在VB.net中使用QuickWatch。但是,替换功能不起作用)

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

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

6 个答案:

答案 0 :(得分:8)

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

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

来自MSDN:

  

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

答案 1 :(得分:3)

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

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

MSDN:String Data Type (Visual Basic)

  

将字符串分配给String变量后,该字符串就是   不可变的,这意味着你不能改变它的长度或内容。什么时候   您以任何方式更改字符串,Visual Basic创建一个新的字符串和   放弃前一个。然后String变量指向新变量   字符串。

答案 2 :(得分:0)

您必须将值分配给某些内容,例如:

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

答案 3 :(得分:0)

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

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

您需要将结果分配给某些内容:

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

答案 4 :(得分:0)

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

你需要这样的东西:

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

答案 5 :(得分:0)

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