2016-03-21 181 views
1

我是vb.net的新手,想要做一些非常簡單的事情。我有從.ini文件讀取某些文本行的代碼。如何替換文本文件中的文本字符串

Dim FilePath As String = Application.StartupPath & "\bin\userconfig.ini" 
Dim text As String = IO.File.ReadAllText(FilePath) 
Dim newText = text.Replace("UserName = ", TextBox_NewUser.Text) 
IO.File.WriteAllText(FilePath, newText) 

我如何讓它替換行文本的"="與你TextBox_NewUser輸入一些東西之後。正如你可以看到的現行代碼,它只是取代我不想要的整個"UserName ="

,在默認情況下,在.ini文本的特定行有此值:

"UserName = Unnamed" 

那麼,如何讓剛剛替換"Unnamed"的東西我在TextBox_NewUser類型?

任何援助將不勝感激。

+0

我已經使用多行來提高可讀性。我希望你沒關係。 –

+0

這個「UserName = Unnamed」的情況是多個實例還是隻有一個? –

+0

如果您使用INI解析器,請參閱我的** IniManager **類(以及裏面的註釋示例):https://github.com/ElektroStudios/ElektroKit/tree/master/Solution/v1.2/Elektro.Application 。設置/類型 – ElektroStudios

回答

2
Dim newText = text.Replace("UserName = Unnamed", "UserName = " & TextBox_NewUser.Text) 
+0

或者: 'Dim newText = text.Replace(「Unnamed」,TextBox_NewUser.Text)' – OSKM

+0

感謝您的回覆,但您會發現「未命名」是可變的,可能是任何內容。所以,如果我試圖再次將我的名字改爲別的東西,那麼它就不起作用。 – Darius47

0

這是另一種方式去做這件事,還有另外的斷言可以完成,例如,下面的代碼假定線不帶空格開始,如果他們先會使用StartsWith等

配置文件

Role = Moderator 
UserName = xxxx 
Joined = 09/23/1006 

代碼

Public Class Form1 
    Private fileName As String = 
     IO.Path.Combine(
      AppDomain.CurrentDomain.BaseDirectory, "userConfig.ini") 
    ''' <summary> 
    ''' assumes the file exist but does not assume there is text in 
    ''' the text box. 
    ''' </summary> 
    ''' <param name="sender"></param> 
    ''' <param name="e"></param> 
    ''' <remarks></remarks> 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     If Not String.IsNullOrWhiteSpace(TextBox_NewUser.Text) Then 
      Dim lines As List(Of String) = IO.File.ReadAllLines(fileName).ToList 
      For index As Integer = 0 To lines.Count - 1 
       If lines(index).ToLower.StartsWith("username") Then 
        lines(index) = String.Concat("UserName = ", TextBox_NewUser.Text) 
       End If 
      Next 
      IO.File.WriteAllLines(fileName, lines.ToArray) 
     End If 
    End Sub 
End Class 
之前做每一行微調

Microsoft OneDrive,VS2013上的示例項目 https://onedrive.live.com/redir?resid=A3D5A9A9A28080D1!907&authkey=!AKQCanSTiCLP4mE&ithint=file%2czip

+0

請試試這個凱倫,謝謝。對於這樣一個簡單的任務,代碼看起來有點複雜。 – Darius47

+0

嗨Darius47,關於一個簡單任務的複雜代碼,它完全依賴於一個人的知識水平,在這種情況下是vb.net語言。當然你可以隨着第一個答案走,這可能更符合你的喜好,因爲它非常簡單。這是這個網站的美麗,你可以通過不同的方式來解決一個問題:-) –