How to add open and close quotes if A string has spaces

后端 未结 3 1648
[愿得一人]
[愿得一人] 2020-12-07 06:42

I\'m trying to write an If then statement to see if a string has a space in it. If it does, I want it to put an \" and \" around the variable. Below is my current code:

相关标签:
3条回答
  • 2020-12-07 07:08

    To properly escape a double quote inside VB's double quoted string literal, you need to double it (no pun intended). This means an empty string "". When you squeeze a quote in it, you get 4 quotes """", and this really means just one double quote literal.

    You should be using:

    MsgBox("""" & ColumnText & """")
    

    Instead of:

    MsgBox(""" & ColumnText & """)
    

    Another thing - notice how the syntax parser highlights your line when it has 3 quotes. In this case & ColumnText & is part of the literal, instead of being an inline variable.

    Reference:

    • String literals @ MSDN.
    0 讨论(0)
  • 2020-12-07 07:14

    Using quote literals makes for hard to read code and as seen here, can easily lead to errors. I find it much easier to use (and read) String.Format and isolate things you want to call out differently. For instance:

    msg = String.Format("There is a problem with [{0}]", columnText)
    

    The result: There is a problem with [foobar]

    If you really like quotes, or need for something else like a command line argument, you can still make the code more legible this way:

    Const quote As String =  """"
    ' or
    Private quote = Convert.ToChar(34)      ' 34 is the code for the quote char
    '...
    msg = String.Format("There is a problem with {0}{1}{0}", quote, columnText)
    

    The result: There is a problem with "foobar" In cases where there are multiple things to wrap with quotes, you just repeat {0} for each as shown.

    0 讨论(0)
  • 2020-12-07 07:21

    You can try this:

    If ColumnText.Contains(" ") Then
                        MsgBox(Chr(34) & ColumnText & Chr(34))
                    End If
                Next
    
    0 讨论(0)
提交回复
热议问题