VB.NET – 製作簡易文字替換工具

  目前正在自學使用VB.NET做一些基本工具,目前已經實現的有:計算機、便利貼、文字替換工具、匯率轉換工具、單位換算工具…等,但是這些都太基本了可能會以筆記的形式把用到的一些重要函數紀錄一下。

功能

1.文字搜尋與替換

VB.NET - 製作簡易文字替換工具
d3kHe5L VB.NET - 製作簡易文字替換工具

2.開啟TXT純文字檔

CYmu64Z VB.NET - 製作簡易文字替換工具

3.清除、複製功能

tKLgFfk VB.NET - 製作簡易文字替換工具

4.另存新檔功能

h1GuScf VB.NET - 製作簡易文字替換工具

接著會說每個功能使用到那些函數,完整程式碼會附在文章最後。

開啟檔案

  開啟檔案的部分,用到的是OpenFileDialog元件,用於顯示對話方塊,以提示使用者開啟電腦中的檔案。若想要設定限制開啟的檔案格式為TXT,可以在元件屬性Filter 設為「純文字檔案|*.txt」。

將文字框內的內容替換成上傳的純文字檔內容: 

txtInput.Text = My.Computer.FileSystem.ReadAllText(OpenFileDialog1.FileName, System.Text.Encoding.Default)

FileSystem.ReadAllText 方法

  • ReadAllText(String)以 String 傳回文字檔內容。
  • ReadAllText(String, Encoding)以 String 傳回文字檔內容,並設定預設開啟編碼。

使用OpenFileDialog1.FileName 取得開啟的檔案名稱和路徑。

System.Text.Encoding.Default代表預設開啟檔案的編碼,Default可用ASCII,BigEndianUnicode,Unicode,UTF7,UTF8代替。


若不想使用元件純寫程式碼的話可以先建立OpenFileDialog

Dim OpenFileDialog1 As New OpenFileDialog()

然後設定副檔名格式

OpenFileDialog1.Filter = "純文字檔案|*.txt"

確認使用者沒有按取消

If OpenFileDialog1.ShowDialog <> Windows.Forms.DialogResult.Cancel Then
  …
End If

文字搜尋與替換

首先要有 txtSearch 與 txtReplace 兩個TextBox,再加上2個按鈕,一個為搜尋作用一個為替換作用。

搜尋

搜尋用到的是 Strings.InStr 方法,該方法傳回整數,指定一個字串在另一個字串內第一次出現的起始位置。如果找到符合項目,則整數是以一起始的索引。

pos = InStr(txtInput.Text, txtSearch.Text)

↑用意為在txtInput.Text文字框中搜尋txtSearch.Text輸入的字串。

假設pos > 0 代表還有相符的項目,若回傳0代表無相符的項目↓

If pos > 0 Then
  txtInput.SelectionStart = pos - 1
  txtInput.SelectionLength = Len(txtSearch.Text)
  txtInput.Focus()
End If

TextBox.SelectionStart 屬性

針對目前選取範圍的開頭,取得或設定字元索引。

public int SelectionStart { get; set; }

如果指定的選取範圍長度會導致在回車和換行字元之間結束選取,則選取範圍長度會自動增加1,因此所產生的選取範圍會跨越整個行結束記號。

替換

使用 SelectedText來取得或設定值,指出控制項中目前選取文字。

使用 Strings.Replace 做文字的替代,該方法會傳回新字串,其中目前字串中指定之 Unicode 字元或 String 的所有項目,全都會被取代成另一個指定的 Unicode 字元或 String。

Dim find As String = txtInput.SelectedText
txtInput.Text = Replace(txtInput.Text, find, txtReplace.Text)

清除、複製文字

清除

清除功能非常容易,就是將字串內容設定為空即可,只需要加上一些判斷,例如文字框內容不為空的時候才可以使用清除功能。其他的就自由發揮

If (txtInput.Text <> "") Then
  txtInput.Text = ""
End If

複製

如果文字框裡的內容不為空,則使用 Clipboard.SetText(Strings) 方法複製。
Clipboard.SetText方法會清除剪貼簿,然後依作業系統而定加入 Text 或 UnicodeText 格式的文字資料。

If txtInput.Text <> "" Then
  Clipboard.SetText(txtInput.Text)
End If

另存新檔

與開啟檔案使用OpenFileDialog元件一樣,另存新檔需要使用到SaveFileDialog元件↓

If SaveFileDialog1.ShowDialog <> Windows.Forms.DialogResult.Cancel Then
  My.Computer.FileSystem.WriteAllText(SaveFileDialog1.FileName, txtInput.Text, False)
End If

這段程式碼代表,若使用者沒有關閉另存新檔的視窗,則將文字寫入檔案。

FileSystem.WriteAllText(string file, string text, bool append) 方法可將文字寫入檔案↓

參數

  • file:要寫入的檔案。
  • text:要寫入檔案的文字。
  • append:True 表示要將內容附加到檔案,False 表示要覆寫檔案的內容。

程式碼

大致功能如以上,若有想到什麼新的功能再加上,下方為完整程式碼。

使用到的元件:OpenFileDialog、SaveFileDialog,其他按鈕跟文字框的名稱自行觀察。

//搜尋按鈕
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  Dim pos As Integer
  pos = InStr(txtInput.Text, txtSearch.Text)
  If pos > 0 Then
    txtInput.SelectionStart = pos - 1
    txtInput.SelectionLength = Len(txtSearch.Text)
    txtInput.Focus()
  End If
End Sub
//替換按鈕
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
  Dim find As String = txtInput.SelectedText
  txtInput.Text = Replace(txtInput.Text, find, txtReplace.Text)
End Sub
//開啟檔案按鈕
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
  OpenFileDialog1.FileName = Nothing
  txtInput.Clear()
  If OpenFileDialog1.ShowDialog <> Windows.Forms.DialogResult.Cancel Then
    txtInput.Text = My.Computer.FileSystem.ReadAllText(OpenFileDialog1.FileName, System.Text.Encoding.UTF8)
  End If
End Sub
//清除按鈕
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
  txtSearch.Text = ""
  txtReplace.Text = ""
  If (txtInput.Text <> "") Then
    Dim clear = MsgBox("是否確定要清除文字框內容?", 4, "清除文字")
    If (clear = 6) Then
      txtInput.Text = ""
    Else
      MsgBox("~好的吧", 0, "清除文字")
    End If
  End If
End Sub
//複製按鈕
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
  If txtInput.Text <> "" Then
    Clipboard.SetText(txtInput.Text)
  End If
End Sub
//另存新檔按鈕
Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
  Dim save = MsgBox("您要將文字框內容保存嗎?", 4, "另存新檔")
  If (save = 6) Then
    If SaveFileDialog1.ShowDialog <> Windows.Forms.DialogResult.Cancel Then
      My.Computer.FileSystem.WriteAllText(SaveFileDialog1.FileName, txtInput.Text, False)
    End If
  Else
    MsgBox("再考慮一下吧~", 0, "另存新檔")
  End If
End Sub
4e52d54f6bc42abb41d26eb5b0df6517?s=250&d=wavatar&r=g VB.NET - 製作簡易文字替換工具
0 0 評分數
Article Rating
訂閱
通知
guest
0 Comments
在線反饋
查看所有評論