wydaje się, jeśli chcesz zamienić cudzysłowy z ich odpowiedników kodu HTML.
Na pierwszy rzut oka twój kod jest absolutnie poprawny. Problem polega na tym, że VB umożliwia kręcone cytaty zamiast zwykłych cytatów w kodzie (ponieważ Unicode jest świetny, prawda?). Oznacza to, że następujące kody są równoważne:
Dim str = "hello"
Dim str = “hello”
Dim str = "hello“
Teraz, jeśli chcesz użyć cudzysłów wewnątrz ciąg, VB nie wie, czy cudzysłów ma zakończyć ciąg, czy nie . W języku C# zostałoby to ustalone przez , co powodowałoby uniknięcie znacznika cudzysłowu, tj. W miejsce napisałbyś "\""
. W języku VB to samo następuje przez podwojeniepod numerem, to jest """"
.
Powrót do kręconych cytatów. To samo, co w przypadku prostych kwotowań, stosuje się zgodnie ze specyfikacją języka VB (¶1.6.4). Więc napisać kręcone cytat w kodzie, spróbuj wykonać następujące czynności:
StringVar = Replace(StringVar, "““", "“")
Niestety, nie mogę wypróbować ten kod i teraz to jest zupełnie możliwe, że po prostu zastępuje IDE to prostymi cytatami. Jeśli to przypadek, alternatywą jest użycie Chr
lub ChrW
z kodem znaku „lewicy znak podwójnego cudzysłowu”:
StringVar = Replace(StringVar, ChrW(&H201C), "“")
lub dla symetrii, napisany w systemie dziesiętnym (ale wolę szesnastkowy kodów znaków) :
StringVar = Replace(StringVar, ChrW(8220), "“")
Coś innego: funkcja Replace
będzie prawdopodobnie wkrótce przestarzałe i doesn’t work everywhere (np Windows Phone 7).Zamiast tego należy użyć metody Replace
klasy String
:
StringVar = StringVar.Replace(, ChrW(8220), "“")
Przykro mi to słyszeć, dzięki za dzielenie się. :( – Mehrdad
Przy okazji, to jest cholernie podchwytliwy problem +1 do zadawania pytania –
+1 Mam ten sam problem –