Imports EnvDTE Imports System.Diagnostics Imports System.Runtime.InteropServices Imports System.Text.RegularExpressions Imports System.Text.Encoding Imports System.ComponentModel Public Module HexToUnicode Sub HexToUnicode() 'DTEドキュメントを取得する Dim DteDocument As EnvDTE.Document = Nothing Try DteDocument = DTE.ActiveDocument() 'Selectionオブジェクトを取得する Dim sel As TextSelection = Nothing Try sel = DteDocument.Selection() '正規表現エンジンを準備します Dim reg As Regex = New Regex("\\[u][0-9a-f]{4}") 'HexからUnicode文字列変換を行うEvaluatorを作成します Dim Evaluator As MatchEvaluator = New MatchEvaluator(AddressOf HexToBinaryEvaluator) '変換結果を書き戻します。 sel.Text = reg.Replace(sel.Text, Evaluator) Finally 'Selectionオブジェクトを開放する If (Not sel Is Nothing) Then Marshal.ReleaseComObject(sel) End If End Try Finally 'DTEドキュメントを開放する If (Not DteDocument Is Nothing) Then Marshal.ReleaseComObject(DteDocument) End If End Try End Sub Private Function HexToBinaryEvaluator(ByVal match As Match) As String '\x0000から\uffffの文字列を処理します。 'バイト文字列から上下のバイト文字列に分割します。 Dim LowerByteString As String = match.Value.Substring(4, 2) Dim UpperByteString As String = match.Value.Substring(2, 2) 'バイトに変換します Dim LowerByte As Byte = System.Convert.ToByte(LowerByteString, 16) Dim UpperByte As Byte = System.Convert.ToByte(UpperByteString, 16) 'バイトコンバータを準備します Dim bc As ByteConverter = New ByteConverter 'Unicodeエンコードを使いバイトから文字列を作り出す Return System.Text.UnicodeEncoding.Unicode.GetString(New Byte() {LowerByte, UpperByte}) End Function End Module