В следующем коде использование строки """
(т.е. левая двойная кавычка внутри строки) приводит к ошибке компиляции в VB.NET:
StringVar = Replace(StringVar, """, "“")
Что происходит здесь?
В следующем коде использование строки """
(т.е. левая двойная кавычка внутри строки) приводит к ошибке компиляции в VB.NET:
StringVar = Replace(StringVar, """, "“")
Что происходит здесь?
Кажется, что вы хотите заменить фигурные кавычки эквивалентом их кода HTML.
С первого взгляда ваш код абсолютно прав. Проблема заключается в том, что VB разрешает фигурные кавычки вместо обычных котировок в коде (потому что Unicode отлично, не так ли?). То есть, следующие коды эквивалентны:
Dim str = "hello"
Dim str = "hello"
Dim str = "hello"
Теперь, если вы хотите использовать кавычку внутри строки, VB не знает, должна ли кавычка заканчивать строку или нет. В С# это было бы исправлено путем экранирования кавычки, т.е. Вместо """
youd write "\""
. В VB то же самое делается путем удвоения значения кавычки, т.е. """"
.
Вернемся к твоей фигурной цитате. То же, что и для прямых котировок, применяется в соответствии со спецификацией языка VB (¶1.6.4). Чтобы написать курсорную цитату в коде, попробуйте следующее:
StringVar = Replace(StringVar, """", "“")
К сожалению, я не могу попробовать этот код сейчас и его вполне возможно, что среда IDE просто заменяет это прямыми кавычками. Если это так, альтернативой является использование Chr
или ChrW
с символьным кодом "левой двойной кавычки":
StringVar = Replace(StringVar, ChrW(&H201C), "“")
Или, для симметрии, написанной в десятичной форме (но я предпочитаю шестнадцатеричный код символа):
StringVar = Replace(StringVar, ChrW(8220), "“")
Что-то еще: функция Replace
, вероятно, скоро будет устанавлена и не работает везде (например, Windows Phone 7). Вместо этого используйте метод Replace
класса String
:
StringVar = StringVar.Replace(, ChrW(8220), "“")
См. http://msdn.microsoft.com/en-us/library/613dxh46%28v=vs.71%29.aspx
Попробуйте следующее:
StringVar = Replace(StringVar, """, ChrW(&H8220))
Похоже, вы ищете ChrW
функцию в пространстве имен Microsoft.VisualBasic
, которое используется для преобразования код символа Юникода в фактический символ.
Если вы пытаетесь заменить прямые кавычки в строке кудрявыми кавычками, попробуйте следующий код:
'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)
Или, если вы пытаетесь закодировать фигурные кавычки слева в строке, заменив их альтернативной нотацией (если предположить, что вы правильно использовали вопрос), попробуйте следующий код:
'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)