2011-01-12 25 views
16

में तार में दोहरे उद्धरण चिह्न छोड़ दिया का उपयोग निम्न कोड में, स्ट्रिंग "“" के उपयोग (यानी एक स्ट्रिंग के अंदर एक बाईं दोहरा उद्धरण चिह्न) VB.NET में एक संकलन त्रुटि में परिणाम:वीबी

StringVar = Replace(StringVar, "“", "“") 

यहाँ क्या चल रहा है?

+2

कि सुनने के लिए क्षमा करें, धन्यवाद: इसके बजाय, String वर्ग के Replace विधि का उपयोग करें। :( – Mehrdad

+2

वैसे, यह एक मुश्किल मुश्किल समस्या है। प्रश्न पूछने के लिए +1। –

+0

+1 मुझे एक ही समस्या है। –

उत्तर

14

यदि आप अपने HTML कोड बराबर के साथ घुमावदार कोट्स बदलना चाहते हैं के रूप में लगता है: स्ट्रिंग एक वैकल्पिक अंकन के साथ उन्हें जगह (यह मानते हुए एक सवाल में इस्तेमाल सही है) द्वारा, निम्नलिखित कोड का प्रयास करें।

पहली नज़र में, आपका कोड बिल्कुल सही है। समस्या यह है कि वीबी कोड में नियमित उद्धरणों के स्थान पर घुंघराले उद्धरण की अनुमति देता है (क्योंकि यूनिकोड महान है, है ना?)। यही है, निम्नलिखित कोड का सब बराबर हैं:

Dim str = "hello" 
Dim str = “hello” 
Dim str = "hello“ 

अब, आप अंदर एक स्ट्रिंग एक उद्धरण चिह्न उपयोग करना चाहते हैं, वीबी पता नहीं है उद्धरण चिह्न या स्ट्रिंग समाप्त करने के लिए माना जाता है या नहीं । सी # में, यह से उद्धरण चिह्न से बच जाएगा, यानी """ के स्थान पर आप "\"" लिखेंगे। वीबी में, द्वारा को उद्धरण चिह्न, यानी """" पर दोगुना किया जाता है।

अपने घुंघराले उद्धरण पर वापस जाएं। सीधे उद्धरण के लिए वीबी भाषा विनिर्देश (¶1.6.4) के अनुसार लागू होता है। तो कोड में एक घुंघराले उद्धरण लिखने के लिए, निम्न प्रयास करें:

StringVar = Replace(StringVar, "““", "“") 

दुर्भाग्य से, मैं अब इस कोड की कोशिश नहीं कर सकते हैं और यह कि आईडीई बस सीधे उद्धरण से प्रतिस्थापित कर देता है पूरी तरह संभव है। अगर ऐसी बात है, एक वैकल्पिक "छोड़ दोहरा उद्धरण चिह्न" के चरित्र कोड के साथ Chr या ChrW उपयोग करने के लिए है:

StringVar = Replace(StringVar, ChrW(&H201C), "“") 

या, समरूपता के लिए, दशमलव में लिखा (लेकिन मैं चरित्र कोड के लिए हेक्साडेसिमल पसंद करते हैं) : और

StringVar = Replace(StringVar, ChrW(8220), "“") 

कुछ: Replace समारोह शायद शीघ्र ही हटा दिया जाएगा और doesn’t work everywhere (जैसे Windows Phone 7)।साझा करने के लिए

StringVar = StringVar.Replace(, ChrW(8220), "“") 
+3

ओएमजी! आपको स्क्रू, विजुअल बेसिक! –

+1

हाँ, आप सही हैं। मुझे यह नहीं पता था। लेकिन एक बार जब आप इसे सुनते हैं, तो यह वास्तव में सही मायने रखता है। बहुत बढ़िया जवाब। +1 –

+1

"" "" काम नहीं करता है; आईडीई घुंघराले उद्धरण बदलता है। हालांकि, ChrW ने मेरा दिन बचाया। धन्यवाद! – raven

0

यह लगता है कि आप Microsoft.VisualBasic नाम स्थान है, जो वास्तविक चरित्र में यूनिकोड वर्ण कोड कन्वर्ट करने के लिए प्रयोग किया जाता है में ChrW function लिए खोज कर रहे । यदि आप एक में बाएं का सामना करना पड़ घुमावदार कोट्स एन्कोड करने के लिए कोशिश कर रहे हैं,

'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) 
+0

कोडी, क्या यह संभव है कि आप कुछ चीजों को भ्रमित कर रहे हों? ओपी का कोड ऐसा लगता है वह अपने एचटीएमएल एस्केप कोड के साथ घुंघराले उद्धरणों को प्रतिस्थापित करना चाहता है। और वह कोड बिल्कुल सही है। न तो "& #" गलत है, न ही अर्धविराम है। (मुझे लगता है कि ओपी ने आपका जवाब स्वीकार कर लिया है, इसलिए शायद मैं गलत हूं लेकिन मैं ऐसा मत सोचो) –

+0

@ कोनराड: हाँ, यह संभव से अधिक है। मैंने सवाल का जवाब देने के दौरान अंधेरे में एक अंधेरा स्टैब लिया। यह बिल्कुल स्पष्ट नहीं था कि वह क्या कर रहा है पूरा करें। –

+0

कोड और समस्या वास्तव में स्पष्ट है जब आप वीबी के बारे में एक महत्वपूर्ण तथ्य बताते हैं, यह घुंघराले उद्धरणों को कैसे प्रबंधित करता है, और भाग रहा है .--) समस्या यह है कि कोई भी, अनुभवी वीबी प्रोग्रामर भी नहीं, यह जानता है ...। मेरा जवाब देखें –