2013-04-02 5 views
5

में डबल उद्धरण का उपयोग कर के बारे में मैं vb पटकथा में एक बहुत ही बुनियादी संदेह है:Vbscript

Msgbox "This is myName" ' This works fine 

Msgbox "This is "myName"" ' This gives an error 

Msgbox "This is ""myName""" 'This works fine 

मेरा प्रश्न है कि अगर मैं दोहरे उद्धरण चिह्नों के साथ प्रदर्शन स्ट्रिंग (एक चर में) को बचाने के लिए की जरूरत है या कारण है कि मैं उपयोग करने की आवश्यकता है एक शब्द या वाक्यांश के लिए दो बार उद्धरण उद्धरण। क्या एक सामान्य डबल कोट्स का उपयोग करने का मतलब यह नहीं है कि मैं पूरी चीज को प्रदर्शित करना चाहता हूं या चर में स्ट्रिंग के रूप में सहेजा जा सकता है?

उत्तर

1

वीबीस्क्रिप्ट में डबल कोट्स एक स्ट्रिंग संलग्न करते हैं। यदि आप एक स्ट्रिंग के अंदर एक डबल क्यूउट डालें तो यह स्ट्रिंग को समय-समय पर समाप्त कर देता है और शेष त्रुटि का कारण बनता है। इसके कारण आपको एक स्ट्रिंग के अंदर डबल कोट्स से बचना चाहिए, जो उन्हें दोगुना करके किया जा सकता है। यही कारण है कि आपका 3 rd कमांड काम करता है जबकि आपके 2 nd नहीं है।

1

स्ट्रिंग अक्षर को बाहर से स्ट्रिंग में जो कुछ भी है, उसे अलग करने के लिए सीमित किया जाना चाहिए। वीबीस्क्रिप्ट में स्ट्रिंग डेलीमीटर "(डबल कोट) है। अन्य भाषाएं" कुछ, कुछ हैं '(सिंगल कोट) को वैकल्पिक या एक अलग-अलग अर्थपूर्ण के साथ एक डिलीमीटर के रूप में उपयोग करती हैं।

एक स्ट्रिंग अक्षर में डेलिमीटर को शामिल करने के लिए इसे बचाना होगा (स्ट्रिंग के 'अंत' या 'शुरू' के रूप में चिह्नित नहीं किया जाना चाहिए। "स्ट्रिंग अक्षर में" के लिए एस्केप मार्कर है। "- वीबीस्क्रिप्ट में । अन्य भाषाओं \" का प्रयोग कर एक दोहरे उद्धरण से बचने के लिए।

तो

Msgbox "This is ""myName""" 'This works fine 
x = "This is ""myName""" 

सही VBScript अगर आप क्या प्रदर्शित करने के लिए (या दुकान) है This is "myName"

11

VBScript में, स्ट्रिंग शाब्दिक हैं डबल कोट्स से घिरा हुआ (")। यह वही अपना पहला उदाहरण से पता चलता है:

Msgbox "This is myName" ' This works fine 

हालांकि, अगर आप अपने स्ट्रिंग शाब्दिक की अंदर एक दोहरे उद्धरण चरित्र शामिल करना चाहते हैं, आप एक समस्या है, क्योंकि VBScript दूसरा दोहरा व्याख्या करने के लिए जा रहा है उद्धरण चरित्र यह स्ट्रिंग अक्षर के अंत को इंगित करने के रूप में पाता है। यह आपका दूसरा उदाहरण दिखाता है:

Msgbox "This is "myName"" ' This gives an error 
        ^ ' because it prematurely terminates the string here 
          ' and doesn't know what to do with the trailing " 

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

Msgbox "This is ""myName""" 'This works fine 
  • आप के साथ स्ट्रिंग शुरू एक भी दोहरे-उद्धरण, एक स्ट्रिंग शाब्दिक की शुरुआत का संकेत है।
  • फिर आप एक एम्बेडेड डबल कोट चरित्र चाहते हैं, तो आप उनमें से दो का उपयोग करें। यह वह जगह है जहां से बचने लगती है: आप से बचें दोहरे उद्धरण चरित्र के साथ दोहरे उद्धरण चरित्र।
  • फिर आप फिर से बचने वाली चीज करते हैं।
  • अंत में, आप पूरे स्ट्रिंग अक्षर को दूसरे डबल कोट वर्ण के साथ समाप्त कर देते हैं।

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

Msgbox "This is \"myName\"" ' doesn't work in VBScript; example only 

हैं, तो आप दोहरे उद्धरण के लिए एक निरंतर घोषित करने और हर बार उपयोग कर सकते हैं:

Const Quote = """" 

' ... later in the code ... 

Msgbox "This is " & Quote & "myName" & Quote 
2

प्रत्येक भाषा का अपना escape character है। मौके से या नहीं, वीबी/वीबीएस में यह डबल कोट-मार्क है। और मौके से भी, हम शाब्दिक स्ट्रिंग में केवल दोहरे उद्धरण को एम्बेड कर सकते हैं। उदाहरण के लिए हम टैब के रूप में अन्य विशेष वर्णों को एम्बेड नहीं कर सकते हैं।

हालांकि, वीबी/वीबीएस एस्केप चरित्र का उपयोग करके हमारे कोडिंग को सरल बना दिया जाता है।

str = """D:\path\to\xyz.exe"" ""arg 1"" ""arg 2""" 
WScript.Echo str ' "D:\path\to\xyz.exe" "arg 1" "arg 2" 

str = Chr(34) & "D:\path\to\xyz.exe" & Chr(34) & " " _ 
    & Chr(34) & "arg 1" & Chr(34) & " " & Chr(34) & "arg 2" & Chr(34) 
WScript.Echo str ' "D:\path\to\xyz.exe" "arg 1" "arg 2" 

str = Join(Array("", "D:\path\to\xyz.exe", " ", "arg 1", " ", "arg 2", ""), Chr(34)) 
WScript.Echo str ' "D:\path\to\xyz.exe" "arg 1" "arg 2" 

लेकिन व्यक्तिगत रूप से मैं Replace उपयोग करने को प्राथमिकता के रूप में यह मेरी कोड अधिक पठनीय हैं।

str = Replace("'D:\path\to\xyz.exe' 'arg 1' 'arg 2'", Chr(39), Chr(34)) 
WScript.Echo str ' "D:\path\to\xyz.exe" "arg 1" "arg 2" 

आप उपयोग कर सकते हैं Replace (यदि आप करने के लिए कि सुविधाजनक) और बाकी विशेष वर्णों के लिए।

str = Replace(Replace("A|B|C!1|2|3", "!", vbNewLine), "|", vbTab) 
WScript.Echo str 
'A B C 
'1 2 3 
संबंधित मुद्दे