在VB.Net中读取和修改特殊字符

时间:2016-12-02 17:35:50

标签: vb.net visual-studio unicode ascii

我正在尝试使用VB.Net(最新)读取一组文件,这些文件使用扩展的特殊字符作为数据的分隔符,例如倒置字母大头钉(Unicode:U + 02D4)和Z与au在顶部“Ž”(Unicode:U + 017D),替换不应存在的某些字符(例如:),然后将数据重写回原始文件。

我遇到的问题是使用UTF8使用IO.File.ReadAllLines无法识别Ž字符。我需要在文件中出现该字符或者存在倒置字母大头钉,因为这些字符代表我正在解释的文件中的分隔符。提前感谢您的帮助!

编辑:另外,我没有报酬写这个程序。我是一名数据录入员工(仍然),我正努力让工作中的生活变得更轻松。但我希望尝试过渡到编程。

以下是我正在使用的一些代码:

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles RemoveDelimiters.Click
            files = IO.Directory.GetFiles(recdirectory.Text)
            If (IsNothing(files)) Then
                MsgBox("Please select a directory before attempting to parse files!")
            Else
                For Each file As String In files
                    Dim extension As String = System.IO.Path.GetExtension(file)
                    If (extension <> ".exe" And extension <> ".bat" And extension <> ".txt" And extension <> ".0") Then
                        'Dim text As String = IO.File.ReadAllText(file)
                        Dim text As String = IO.File.ReadAllText(file, System.Text.Encoding.UTF8)
                        Dim stext
                        stext = Microsoft.VisualBasic.Left(text, 300)
                        text = text.Replace(":", "")
                        text = text.Replace("`", "")
                        text = text.Replace("P*!GS*IA*FDE*", "P*:!GS*IA*FDE*")
                        'For Atkore files
                        'MsgBox(stext)
                        'text = text.Replace(ChrW(65533), ChrW(724))
                        'text = text.Replace(ChrW(65533), ChrW(381))
                        If (text.IndexOf("?") > -1) Then
                            MsgBox("found ? in file: " & file)
                        End If
                        If (text.IndexOf("P*:!GS*IA*FDE*") < 0) Then
                            If (text.IndexOf("GS*IA*FDE*") > -1) Then
                                text = text.Insert(text.IndexOf("GS*IA*FDE*") - 1, ":")
                            End If
                            If (text.IndexOf("GS*IM*FDE*") > -1) Then
                                text = text.Insert(text.IndexOf("GS*IM*FDE*") - 1, ":")
                            End If
                            If (text.IndexOf("GS*IM*FDE*") < 0 And text.IndexOf("GS*IA*FDE*") < 0) Then
                                MsgBox("Header not found for file: " & vbCrLf & file)
                            End If
                        End If
                        IO.File.WriteAllText(file, text, System.Text.Encoding.UTF8)
                    End If
                Next
                MsgBox("The operation has been completed!")
            End If
        End Sub

0 个答案:

没有答案