关键词搜索

源码搜索 ×
×

XML的几种读取,修改方式(VB.NET)

发布2022-06-16浏览627次

详情内容

vb.net教程icon-default.png?t=M4ADhttps://www.xin3721.com/eschool/vbnetxin3721/

'若使用Reflector,而且程序中有中文字符,Reflector会用代码表示。若反成C#,网上有很多解决方案了,而VB.net却找不到.

'VB.net里可能更复杂些,毕竟C#还是一个完整的字符串,而VB中却被拆成一个一个单字,然后用&连接

'下面这段代码解决了这个问题,将其拷到宏编辑器里保存即可

'写的有点傻傻的,懒得优化了,好使就行:)

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics
Imports System.Text.RegularExpressions

Public Module Unicode2Character
    '必须手工选择到单字
    Public Sub 单字转换()
        Dim doc As Document = DTE.ActiveDocument
        Dim docText As TextDocument = doc.Object
        Dim selText As TextSelection = docText.Selection()
        Dim text As String = selText.Text
        Dim ch As Char = cc(text)
        docText.ReplacePattern(text, ch)
    End Sub

    '全部替换当前文件的汉字
    Public Sub 全部转换()
        Dim doc As Document = DTE.ActiveDocument
        Dim docText As TextDocument = doc.Object
        Dim selText As TextSelection = docText.Selection()
        selText.SelectAll()
        Dim text As String = selText.Text
        Dim iLength As Integer
        Do
            iLength = text.Length
            Dim m As Text.RegularExpressions.Match

            '先找“字符串”:ChrW(12345) & ChrW(23456) ... & ChrW(56789)
            Dim strPattern As String = "(ChrW[09]5\s&\s)+ChrW[09]5"
            m = Regex.Match(text, strPattern, RegexOptions.IgnoreCase)
            If m.Success Then
                Dim strMatch As String = m.Value
                Dim strValue As String = m.Value
                text = text.Replace(strValue, "")
                strValue = strValue.Replace("&", "")
                strValue = strValue.Replace(" ", "")
                strValue = strValue.Replace("ChrW(", "")
                strValue = strValue.Replace(")", "")

                Dim chars As Integer = strValue.Length()
                chars = chars \ 5
                Dim strNew As String = ""
                For i As Integer = 0 To chars - 1
                    Dim x As String = strValue.Substring(i * 5, 5)
                    strNew = strNew & ic(x)
                Next
                docText.ReplacePattern(strMatch, """" & strNew & """")
            Else
                Exit Do
            End If
            If Not text.Length < iLength Then
                Exit Do
            End If
        Loop


        selText.SelectAll()
        text = selText.Text
        Do
            iLength = text.Length
            Dim m As Text.RegularExpressions.Match

            '再找单字:" & ChrW(23456) & "
            Dim strPattern As String = "\""\s&\sChrW[09]5\s&\s\"""
            m = Regex.Match(text, strPattern, RegexOptions.IgnoreCase)
            If m.Success Then
                Dim strMatch As String = m.Value
                Dim strValue As String = m.Value
                text = text.Replace(strValue, "")
                strValue = strValue.Replace("&", "")
                strValue = strValue.Replace(" ", "")
                strValue = strValue.Replace("ChrW(", "")
                strValue = strValue.Replace(")", "")
                strValue = strValue.Replace("""", "")
                Dim strNew = ic(strValue)
                docText.ReplacePattern(strMatch, strNew)
            Else
                Exit Do
            End If
            If Not text.Length < iLength Then
                Exit Do
            End If
        Loop


        selText.SelectAll()
        text = selText.Text
        Do
            iLength = text.Length
            Dim m As Text.RegularExpressions.Match

            '再找单字:" & ChrW(23456)
            Dim strPattern As String = "\""\s&\sChrW[09]5"
            m = Regex.Match(text, strPattern, RegexOptions.IgnoreCase)
            If m.Success Then
                Dim strMatch As String = m.Value
                Dim strValue As String = m.Value
                text = text.Replace(strValue, "")
                strValue = strValue.Replace("&", "")
                strValue = strValue.Replace(" ", "")
                strValue = strValue.Replace("ChrW(", "")
                strValue = strValue.Replace(")", "")
                strValue = strValue.Replace("""", "")
                Dim strNew = ic(strValue)
                docText.ReplacePattern(strMatch, strNew & """")
            Else
                Exit Do
            End If
            If Not text.Length < iLength Then
                Exit Do
            End If
        Loop

        selText.SelectAll()
        text = selText.Text
        Do
            iLength = text.Length
            Dim m As Text.RegularExpressions.Match

            '再找单字:ChrW(23456) & "
            Dim strPattern As String = "ChrW[09]5\s&\s\"""
            m = Regex.Match(text, strPattern, RegexOptions.IgnoreCase)
            If m.Success Then
                Dim strMatch As String = m.Value
                Dim strValue As String = m.Value
                text = text.Replace(strValue, "")
                strValue = strValue.Replace("&", "")
                strValue = strValue.Replace(" ", "")
                strValue = strValue.Replace("ChrW(", "")
                strValue = strValue.Replace(")", "")
                strValue = strValue.Replace("""", "")
                Dim strNew = ic(strValue)
                docText.ReplacePattern(strMatch, """" & strNew)
            Else
                Exit Do
            End If
            If Not text.Length < iLength Then
                Exit Do
            End If
        Loop

        selText.SelectAll()
        text = selText.Text
        Do
            iLength = text.Length
            Dim m As Text.RegularExpressions.Match

            '最后单字:ChrW(23456)
            Dim strPattern As String = "ChrW[09]5"
            m = Regex.Match(text, strPattern, RegexOptions.IgnoreCase)
            If m.Success Then
                Dim strMatch As String = m.Value
                Dim strValue As String = m.Value
                text = text.Replace(strValue, "")
                strValue = strValue.Replace(" ", "")
                strValue = strValue.Replace("ChrW(", "")
                strValue = strValue.Replace(")", "")
                Dim strNew = ic(strValue)
                docText.ReplacePattern(strMatch, """" & strNew & """")
            Else
                Exit Do
            End If
            If Not text.Length < iLength Then
                Exit Do
            End If
        Loop

    End Sub
    Private Function cc(ByVal str As String) As Char
        Dim int As Integer = CInt(str.Substring(5, 5))
        Dim ch As Char = ChrW(int)
        Return ch
    End Function
    Private Function ic(ByVal int As Integer) As Char
        Dim ch As Char = ChrW(int)
        Return ch
    End Function


End Module

附:
可以进行charcode值与字符之间互相转换
Yahoo

希望能对大家有些帮助

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载