Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VB7
Expertise: Intermediate
Apr 27, 2002

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
Francesco Balena
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date