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

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.


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

WEBINAR:

On-Demand

Application Security Testing: An Integral Part of DevOps


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