2013-10-07 59 views
3

我寫了一些代碼。代碼如下所示。第一部分是將html轉換爲字符串格式。第二部分是在字符串中搜索標記,並用其他字符串替換字符串。VB.net中的字符串替換函數如何不起作用?

第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使用快速監視。但是,替換功能沒有完成其工作)

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

請幫助。我不知道我犯了什麼錯誤

+1

字符串是不可變的,你需要重新分配'TempText'的結果。 – vcsjones

回答

5

String.Replace返回新的字符串,而不是修改源代碼。你必須爲它分配回你的變量:

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

從MSDN:

返回一個新字符串在當前實例指定字符串的所有出現與其他指定的字符串替換。

0

你必須賦值的東西,如:

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

這是執行字符串替換,但它沒有把它的結果任何地方:

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

您需要將結果分配給某物:

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

字符串是不可變的,這意味着一旦它們被創建,你就不能修改它們。所以,你必須創建一個新的,並分配給您的字符串變量:

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

MSDN:String Data Type (Visual Basic)

一旦你一個字符串賦值給一個字符串變量,該字符串是 不可改變的,這意味着你不能改變它的長度或內容。當您以任何方式更改字符串時,Visual Basic將創建一個新字符串,並放棄上一個字符串。字符串變量然後指向新的 字符串。

0

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

你需要的東西是這樣的:

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

「這是一個字符串」 如果你替換爲「字符串」「什麼」這個字符串應該是:「這是什麼」。所以你可以做的是把它放在一個新的字符串中。怎麼樣?替換方法返回一個字符串,這很容易:) 看到這個:msdn