ways to escape { in string.format function in vb - vb.net

I am facing an issue with my code .
the thing is i want to escape { in the string.format function ...
Of course one way to escape it is to use {{ (2 curly braces)
Is there any other way possible to escape without using the double curly braces.
thanks

Why would there be another solution? {{ is specified as the way of escaping braces in a format string... I can't see why the API designers would include another way.
Of course, you could also provide a format parameter and then populate it with a brace:
Dim text as String = string.Format("{0}{1}", "{", "}")
will give "{}" as a string, for example... but I can't see that this is a better solution.
Perhaps if you could say why you dislike the normal solution (double curly braces) we could advise you on an alternative - but there isn't one within the format specification "language" itself, as far as I'm aware.

No, unfortunately it is not possible.

Well, you could do it this way, but not a good idea in my view.
Dim str1 As String = "Print this " & Chr(123) & "0" & Chr(125) & " string"
Dim str2 As String = "silly"
Console.WriteLine(String.Format(str1, str2))
Console.ReadLine()

Related

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

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:
If ColumnText.Contains(" ") Then
MsgBox(""" & ColumnText & """)
End If
Next
But it's seeing quoting everything... Any suggestions?
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.
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.
You can try this:
If ColumnText.Contains(" ") Then
MsgBox(Chr(34) & ColumnText & Chr(34))
End If
Next

Searching string for double quotes

When searching for a double quote using Instr, I know that you need to use 4 double quotes for the search string Instr(String,""""), or alternatively, Instr(String, Chr(34)).
What I don't quite understand is why 3 double quotes don't work Instr(String,""")
I have Googled for this, but haven't come across the answer I'm looking for. I realize this is a very basic question, but I can't seem to get my head around it.
The "" is just quoting a " - therefore, """ means "_here comes a double quote - and VBA lacks the closing "!
In other words:
x = "" -> Content of is blank
x = """" -> Content of x is "
x = """ -> VBA cannot compile, as it reads here comes a string (the first ") that contains a double quote ("") - but then does not find the closing "...

How to replace text to a 'vbcr'

Using vb.net and visual studio 2012.
I have a bunch of strings using custom text replacement.
By that I mean that they are all one-line strings using, for example, "&1" to replace 'vbcr' and so on.
I have to take this string and replace all the "&1" by a vbcr.
I tried using regex and stringbuilder replace. Here is an example:
finaltext = firsttext.Replace("&1", vbcr)
But doing it this way results in replacing the "&1" by a simple space.
I thought that vbcr was the problem but I tried to reverse my code by:
finaltext = firsttext.Replace(vbcr, "&1")
The vbcr were correctly replaced by "&1" so I don't understand why my original code is not working.
I know it's possible using a long complicated custom function but I would prefer to avoid this solution if possible.
According to MSDN, the syntax of String.Replace states that the first argument is the oldValue and the second argument is the one that replaces it.
Also, if you need newlines, you should be using Environment.NewLine:
finaltext = firsttext.Replace("&1", Environment.NewLine)
Environment.NewLine is easier to read and it also takes care of the platform for you, being
A string containing "\r\n" for non-Unix platforms, or a string
containing "\n" for Unix platforms.

How to add only 1 " in String

this might be a super easy question but it is not. I am wondering how to put only a single " in a string
Example
Dim eg as String
eg = ""W"
It just does not seem to work. Is there any special characters for it as i need to add in codebehind for my VB.
If it's Visual Basic you need one more ":
Dim eg as String
eg = """W"
If it's C#, use the \ escape character: "\"W"
http://msdn.microsoft.com/en-us/library/267k4fw5.aspx
Just double it:
Dim eg as String
eg = """W"

Using left double quotation marks in strings in VB

In following code, the usage of the string "“" (i.e. a left double quotation mark inside a string) results in a compile error in VB.NET:
StringVar = Replace(StringVar, "“", "“")
What’s going on here?
It seems as if you want to replace curly quotes with their HTML code equivalent.
On the first glance, your code is absolutely correct. The problem is that VB allows curly quotes in place of regular quotes in code (because Unicode is great, right?). That is, the following codes are all equivalent:
Dim str = "hello"
Dim str = “hello”
Dim str = "hello“
Now, if you want to use a quotation mark inside a string, VB doesn’t know whether the quotation mark is supposed to end the string or not. In C#, this would be fixed by escaping the quotation mark, i.e. in place of """ you’d write "\"". In VB, the same is done by doubling the quotation mark, i.e. """".
Back to your curly quote. The same as for straight quotes applies according to the VB language specification (¶1.6.4). So to write a curly quote in code, try the following:
StringVar = Replace(StringVar, "““", "“")
Unfortunately, I cannot try this code now and it’s altogether possible that the IDE simply replaces this by straight quotes. If that’s the case, an alternative is to use Chr or ChrW with the character code of the “left double quotation mark”:
StringVar = Replace(StringVar, ChrW(&H201C), "“")
Or, for symmetry, written in decimal (but I prefer hexadecimal for character codes):
StringVar = Replace(StringVar, ChrW(8220), "“")
Something else: the Replace function will probably soon be deprecated and doesn’t work everywhere (e.g. Windows Phone 7). Instead, use the Replace method of the String class:
StringVar = StringVar.Replace(, ChrW(8220), "“")
See http://msdn.microsoft.com/en-us/library/613dxh46%28v=vs.71%29.aspx
Try this:
StringVar = Replace(StringVar, "“", ChrW(&H8220))
It looks like you're searching for the ChrW function in the Microsoft.VisualBasic namespace, which is used to convert a Unicode character code into the actual character.
If you're trying to replace straight quotes in a string with curly quotes, try the following code:
'Declare a string that uses straight quotes
Dim origString As String = "This string uses ""quotes"" around a word."
'Create a new string by replacing the straight quotes from the original string
'with left-facing curly quotes
Dim newString As String = origString.Replace("""", ChrW(8220))
'Display the result
MessageBox.Show(newString)
Or, if you're trying to encode the left-facing curly quotes in a string by replacing them with an alternate notation (assuming the one you used in the question is correct), try the following code:
'Declare a string that uses left-facing curly quotes
Dim origString As String = "This string uses fancy " & ChrW(8220) & _
"quotes" & ChrW(8220) & " around a word."
'Create a new string by replacing the curly quotes with an arbitrary string
Dim newString As String = origString.Replace(ChrW(8220), "“")
'Display the result
MessageBox.Show(newString)