Xử lý string BÀI 6: TEXT FILE VÀ STRING 1 Bài 6 Text file 09:56:11 Giao diện thiết kế: - Nhấn Mở: dùng OpenFile dialog mở file txt và hiện nội dụng lên TextBox txtDisplay, lblDisplay hi
Trang 11 Xử lý text file
2 Xử lý string
BÀI 6: TEXT FILE VÀ STRING
1 Bài 6
Text file
09:56:11
Giao diện thiết kế:
- Nhấn Mở: dùng OpenFile dialog mở file txt và hiện nội dụng lên TextBox txtDisplay,
lblDisplay hiện câu ‘Nội dung file ???.txt:’
Label lblDisplay
Textbox txtDisplay
1
Trang 2Bài 6 3
Text file
09:56:11
Đọc dữ liệu từ text file:
- Tìm file number còn trống bằng hàm FreeFile
- Mở file bằng hàm FileOpen(File_Number,Tên_file,Chế độ Input)
- Đọc nội dung file cho đến khi kết thúc file
- Đóng file
Ghi nội dung file text:
- Tìm file number còn trống bằng hàm FreeFile
- Mở file bằng hàm FileOpen(File_Number,Tên_file,Chế độ Output)
- Ghi nội dung file bằng hàm PrintLine
- Đóng file
Private Sub mnuOpen_Click(sender As Object, e As EventArgs) Handles
mnuOpen.Click
Dim FileNum As Integer = FreeFile()
Dim TextRead As String = Nothing
OpenFileDialog1.Filter = "Text files (*.txt)|*.txt"
OpenFileDialog1.InitialDirectory = Application.StartupPath
OpenFileDialog1.FileName = ""
If OpenFileDialog1.ShowDialog = DialogResult.OK Then
FileOpen(FileNum, OpenFileDialog1.FileName, OpenMode.Input)
While Not EOF(FileNum)
TextRead += LineInput(FileNum)
End While
lblDisplay.Text = "Nội dung file: " + OpenFileDialog1.FileName
txtDisplay.Text = TextRead
End If
FileClose(FileNum)
End Sub
09:56:11
3
Trang 3Bài 6 5
ANSI file: Unicode file:
Private Sub mnuSave_Click(sender As Object, e As EventArgs) Handles
mnuSave.Click
Dim FileNum As Integer = FreeFile()
If txtDisplay.Text <> "" Then
SaveFileDialog1.Filter = "Text files (*.txt)|*.txt"
SaveFileDialog1.InitialDirectory = Application.StartupPath
SaveFileDialog1.FileName = ""
If SaveFileDialog1.ShowDialog = DialogResult.OK Then
FileOpen(FileNum, SaveFileDialog1.FileName, OpenMode.Output)
lblDisplay.Text = "Đã lưu file: " + SaveFileDialog1.FileName
PrintLine(FileNum, txtDisplay.Text)
End If
FileClose(FileNum)
End If
End Sub
09:56:11
5
Trang 4Bài 6 7
09:56:11
Đọc nội dung file text bằng lớp StreamReader:
- Tạo biến
- Dùng phương thức ReadLine để đọc từng dòng hay ReadToEnd để đọc
toàn bộ nội dung file text
- Kiểm tra đã kết thúc file chưa dùng thuộc tính EndOfStream
- Đóng StreamReader
15:20:54
Private Sub mnuOpen_Click(sender As Object, e As EventArgs) Handles
mnuOpen.Click
Dim sr As IO.StreamReader
Dim TextRead As String = Nothing
OpenFileDialog1.Filter = "Text files (*.txt)|*.txt"
OpenFileDialog1.InitialDirectory = Application.StartupPath
OpenFileDialog1.FileName = ""
If OpenFileDialog1.ShowDialog = DialogResult.OK Then
sr = New IO.StreamReader(OpenFileDialog1.FileName)
While Not sr.EndOfStream
TextRead += sr.ReadLine + vbCrLf
End While
lblDisplay.Text = "Nội dung file: " + OpenFileDialog1.FileName
txtDisplay.Text = TextRead
End If
sr.Close()
End Sub
7
Trang 5Bài 6 9
Private Sub mnuOpen_Click(sender As Object, e As EventArgs) Handles
mnuOpen.Click
Dim sr As IO.StreamReader
Dim TextRead As String = Nothing
OpenFileDialog1.Filter = "Text files (*.txt)|*.txt"
OpenFileDialog1.InitialDirectory = Application.StartupPath
OpenFileDialog1.FileName = ""
If OpenFileDialog1.ShowDialog = DialogResult.OK Then
sr = New IO.StreamReader(OpenFileDialog1.FileName)
TextRead = sr.ReadToEnd
lblDisplay.Text = "Nội dung file: " + OpenFileDialog1.FileName
txtDisplay.Text = TextRead
End If
sr.Close()
End Sub
Dùng ReadToEnd để đọc toàn bộ nội dung file text:
15:54:14 Kết quả khi dùng StreamReader:
9
Trang 6Bài 6 11
Ghi nội dung text bằng lớp StreamWriter:
- Tạo biến
- Dùng phương thức WriteLine để ghi từng dòng hay Write để ghi
- Đóng StreamWriter
15:20:54
Private Sub mnuSave_Click(sender As Object, e As EventArgs) Handles
mnuSave.Click
Dim sr As IO.StreamWriter
If txtDisplay.Text <> "" Then
SaveFileDialog1.Filter = "Text files (*.txt)|*.txt"
SaveFileDialog1.InitialDirectory =
Application.StartupPath
SaveFileDialog1.FileName = ""
If SaveFileDialog1.ShowDialog = DialogResult.OK Then
sr = New IO.StreamWriter(SaveFileDialog1.FileName)
sr.WriteLine(txtDisplay.Text)
lblDisplay.Text = "Đã lưu file: " + SaveFileDialog1.FileName
sr.Close() End If
End If
End Sub
15:54:14 Kết quả khi dùng StreamWriter:
11
Trang 7Bài 6 13
Xử lý string
Các phương thức xử lý chuỗi:
ToUpper: đổi sang chữ hoa
Dim st As String = "Nguyễn Văn A"
Dim st1 As String = st.ToUpper st1 = “NGUYỄN VĂN A”
ToLower: đổi sang chữ thường
Length: chiều dài chuỗi st.Length = 12
Trim: cắt bỏ khoảng trắng trước và sau chuỗi
Dim st As String = " Nguyễn Văn A "
Dim st1 As String = st.Trim
st1 = “Nguyễn Văn A”
Xử lý string
09:56:11
Substring: cắt chuỗi
st.Substring(0, 6) = "Nguyễn"
Lấy 6 ký tự bắt đầu từ vị trí 0 st.Substring(1, 4) = "guyễ"
Dim st As String = "Nguyễn Văn A"
Lấy 4 ký tự bắt đầu từ vị trí 1 st.Substring(2) = "uyễn Văn A"
13
Trang 8Bài 6 15
Xử lý string
09:56:11
Dim st As String = "Nguyễn Văn A"
Remove: xóa bớt ký tự trong chuỗi
st.Remove(4, 3) = "NguyVăn A"
Xóa 3 ký tự bắt đầu từ vị trí 4 st.Remove(4) = “Nguy"
Xóa từ vị trí 4 đến hết chuỗi IndexOf: tìm vị trí chuỗi con trong một chuỗi
st.IndexOf("Văn") = 7 st.IndexOf(“Thị") = -1
Xử lý string
09:56:11
Dim st As String = "Nguyễn Văn A"
Dim st1() As String = st.Split(" ")
Split: cắt chuỗi thành nhiều chuỗi con
st1.Length = 3
st1(0) = "Nguyễn“
st1(1) = “Văn“
st1(2) = “A“
TextRead =
st1 = st.Split( ControlChars.CrLf.ToCharArray(),
StringSplitOptions.RemoveEmptyEntries)
st1(0) = "Nguyễn Văn A“
st1(1) = “1“
st1(2) = “Trần Văn B“
st1(3) = “2“
15
Trang 9Bài 6 17
Xử lý string
- Kiểm tra thông tin đăng nhập từ file text trong đó thông tin
user và password lưu trên từng dòng.
- Dùng StreamReader đọc nội dung file text
- Tên user không phân biệt chữ hoa và chữ thường
Giao diện: Nội dung file user.txt
Xử lý string
09:56:11
Insert: chèn chuỗi con vào một chuỗi
st.Insert(2, "BCD") = "NBCDguyễn Văn A"
st.Insert(st.Length, "BCD") = "Nguyễn Văn ABCD"
Chèn chuỗi mới vào vị trí 2
Chèn chuỗi mới vào cuối chuỗi
17
Trang 10Bài 6 19
09:56:11 Thiết kế form và viết mã lệnh:
- Nhấn nút Thêm: thêm user và pass tương ứng trong 2 textbox txtUser
và txtPass vào, trong đó user và pass không được để trống
- Nhấn nút Xóa: xóa user đã nhập trong textbox txtUser ra khỏi hệ
thống Nếu không tìm thấy thì cảnh báo
- Nhấn nút Liệt kê: liệt kê tất cả user và pass tương ứng lên
Listbox lstUser.
- Nếu double-click vào phần tử nào trên ListBox lstUser thì hiện lên
txtUser và txtPass.
Textbox txtUser Textbox txtPass
Listbox lstUser
Bổ sung: khi nhấn
nút Thêm, nếu user
đã tồn tại thì không thêm
09:56:11
Xử lý ký tự
Asc: xác định mã ASCII của ký tự
AscCode = Asc("A")
AscCode = 65
Chr: chuyển từ mã ASCII sang dạng ký tự
letter = Chr(65)
letter = "A"
19
Trang 11Bài 6 21
Mã hóa string
File user1.txt:
Có thể xem được user và pass để đăng nhập hệ thống
Mã hóa text
Mã hóa string
09:56:11
Dùng toán tử XOR:
- Gán trước một keycode để XOR
- Lấy từng ký tự trong string để XOR
- Nối các ký tự lại để tạo chuỗi đã mã hóa
- Quá trình khôi phục giống như giải mã
Private Function EncryptString(Source As String, Keycode As Integer)
As String
Dim letter As String
Dim Result As String = Nothing
Dim i As Integer
For i = 0 To Source.Length - 1
letter = Source.Substring(i, 1)
21
Trang 12Bài 6 23
Mã hóa string
12:54:41
Dim so As String = "Nguyen Van A"
st = EncryptString(so, 123) ' Mã hóa với keycode = 123
st1 = EncryptString(st, 123) ' Giải mã với keycode = 123
st2 = EncryptString(st, 11) ' Giải mã với keycode = 11
Mã hóa string
12:54:41
Viết chương trình mở file text, mã hóa nội dung và lưu lại
file text:
- Nút Mở: mở nội dung file text và hiển thị trên TextBox.
- Nút Mã hóa: nhập keycode, mã hóa nội dung trên TextBox và
lưu vào file
- Nút Giải mã: nhập keycode, giải mã nội dung trên TextBox và
lưu vào file
23