devxlogo

StringToCode – Convert a string to the corresponding VB code

StringToCode – Convert a string to the corresponding VB code

' Put quotes around a string and double any embedded Chr$(34)'' convert all control characters into ControlChars.*** VB constants' or CHR() functions'' This function is useful, for example, when you are writing a MsgBox wizard. ' Tipically, such a wizard would let the user enter a string in a multiline ' textbox control, and would later have to convert it into a quoted string in ' order to produce the actual MsgBox code. Just putting quotes around the ' string doesn't work, because you have to account for embedded quotes and ' control characters. Function StringToCode(ByVal Source As String) As String    Dim Index As Integer    Dim result As New Text.StringBuilder()    Dim openQuotes As Boolean    Dim trailingAmpersand As Boolean    ' empty string is a special case    If Source Is Nothing OrElse Source.Length = 0 Then        Return """"""    End If    For Index = 0 To Source.Length - 1        Dim ch As Char = Source.Chars(Index)        If Not Char.IsControl(ch) Then            ' open the double quotes if necessary            If openQuotes = False Then                result.Append("""")                openQuotes = True            End If            ' append the character            result.Append(ch)            ' double embedded quotes            If ch = """" Then result.Append(ch)            trailingAmpersand = False        Else            ' it is a control character             ' close double quotes, if open            If openQuotes Then                result.Append(""" & ")                openQuotes = False            End If            Select Case Asc(ch)                Case 0                    result.Append("ControlChars.NullChar & ")                Case 13                    result.Append("ControlChars.Cr & ")                Case 10                    result.Append("ControlChars.Lf & ")                Case 9                    result.Append("ControlChars.Tab & ")                Case Else                    result.Append("Chr(")                    result.Append(Asc(ch).ToString)                    result.Append(") & ")            End Select            trailingAmpersand = True        End If    Next    ' close open quotes    If openQuotes Then        result.Append("""")    ElseIf trailingAmpersand Then        result.Remove(result.Length - 3, 3)    End If    ' convert CR+LF to a single symbolic constant and return the result    Return result.ToString.Replace("ControlChars.Cr & ControlChars.Lf", _        "ControlChars.CrLf")End Function

devx-admin

Share the Post: