次のコードでは、文字列"“"
(つまり、文字列内の左二重引用符)を使用すると、VB.NETでコンパイルエラーが発生します。
StringVar = Replace(StringVar, "“", "“")
何が起きてる?
次のコードでは、文字列"“"
(つまり、文字列内の左二重引用符)を使用すると、VB.NETでコンパイルエラーが発生します。
StringVar = Replace(StringVar, "“", "“")
何が起きてる?
カーリー クォーテーションを HTML コードに置き換えたいようです。
一見すると、あなたのコードは完全に正しいです。問題は、VB がコード内の通常の引用符の代わりにカーリー クォートを使用できることです (Unicode は優れているためですよね?)。つまり、次のコードはすべて同等です。
Dim str = "hello"
Dim str = “hello”
Dim str = "hello“
ここで、文字列内で引用符を使用する場合、VB は引用符が文字列を終了する必要があるかどうかを認識しません。C# では、これは引用符をエスケープすることで修正されます。つまり、 """
you'd writeの代わりに"\""
. VB では、引用符を二重""""
にすることで同じことが行われます。
あなたの中の引用に戻ります. VB 言語仕様 (¶1.6.4) に従って、ストレート クォーテーションと同じことが適用されます。したがって、コードで中括弧を記述するには、次のことを試してください。
StringVar = Replace(StringVar, "““", "“")
残念ながら、今はこのコードを試すことができず、IDE がこれを単純に引用符で置き換えてしまう可能性は十分にあります。その場合は、Chr
orChrW
を「左二重引用符」の文字コードで使用することもできます。
StringVar = Replace(StringVar, ChrW(&H201C), "“")
または、対称性のために、10 進数で記述します (ただし、文字コードには 16 進数を好みます):
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))
Unicode文字コードを実際の文字に変換するために使用される名前空間で関数を 検索しているようです。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)