2008-10-13 15 views
5

मेरे पास कई परियोजनाओं का समाधान है और हमें कुछ गंभीर वैश्विक प्रतिस्थापन करने की आवश्यकता है।वैश्विक स्टूडियो में खोजें और बदलें

क्या वाइल्डकार्ड प्रतिस्थापन करने का कोई तरीका है जहां प्रतिस्थापन के बाद कुछ मूल्य रहते हैं?

तो, उदाहरण के लिए अगर मैं हर HttpContext.Current.Session [ "whatevervalue"] बनने के लिए HttpContext.Current.Session [ "whatevervalue"]। ToString() स्ट्रिंग मान में पारित किया जा रहा हो जाएगा चाहते हैं आदरणीय? मैं "जो कुछ भी" बदलना नहीं चाहता हूं, मैं सिर्फ एक टोस्टिंग() जोड़ना चाहता हूं जहां पैटर्न मेल खाता है।

क्या यह विजुअल स्टूडियो में संभव है?

उत्तर

18

सबसे पहले, अपने प्रोजेक्ट्स का बैकअप लें, बस मामले में ... बड़े पैमाने पर प्रतिस्थापन से पहले हमेशा एक अच्छा विचार।

ढूँढें बॉक्स में पैटर्न, का उपयोग करें::

HttpContext\.Current\.Session\["{[email protected]}"\] 

और बदलें बॉक्स में, उपयोग:

फिर, ढूँढें में/संवाद बदलें, उपयोग रेगुलर एक्सप्रेशन चेकबॉक्स का चयन करें

HttpContext.Current.Session["\1"].ToString() 
+0

अक्सर मैं RegEx का उपयोग करता हूं, आपको लगता है कि मैं इसे पहले ही जानता हूं। धन्यवाद! –

+0

इसके अलावा, पहले परीक्षण करने के लिए सावधान रहें; वीईएस के कुछ संस्करणों में RegEx फ़ंक्शन को प्रतिस्थापित करने में एक-एक-एक त्रुटि है। – Nick

+0

यदि यह संभव है कि आपके पहचानकर्ताओं में एम्बेडेड उद्धरण शामिल हैं (उदाहरण के लिए, सत्र ["कुछ \" कुंजी "], तो आप डेविड मिशेल के रेगेक्स का उपयोग करना चाहेंगे: http://stackoverflow.com/questions/198984/global-find-and -रेप्लेस-इन-विज़ुअल-स्टूडियो # 199010 –

4

आसान ... नियमित अभिव्यक्तियों और समूहकरण का उपयोग करें।

क्या ढूँढ़े: (HttpContext.Current.Session [ "whatevervalue"])

से बदले: \ 0.ToString ();

उपयोग जांच करना ना भूलें: और रेगुलर एक्सप्रेशन

+0

मैं कुछ याद आ रही किया जाना चाहिए। मैंने एक प्रश्न प्रस्तुत करने से पहले पाठ के एक चयनित सेट पर एक अभ्यास चलाने की कोशिश की। ऐसा लगता है लेकिन सही ढंग से प्रतिस्थापित नहीं है। मैं फिर से कोशिश करूंगा, धन्यवाद। –

+0

HttpContext.Current.Session ["। @"] थोड़ा बेहतर नहीं होगा? – hova

+0

\ 0 के उपयोग के लिए वोट दिया गया। –

0

चयन आप इस तरह के कार्यों के लिए Visual Assist उपयोग कर सकते हैं। यह विभिन्न प्रकार के रिफैक्टरिंग के लिए एक शक्तिशाली उपकरण है।

+0

इस के लिए नहीं। – Lev

4

आप "विकल्प खोजें" विस्तारक खोलना चाहते हैं और "नियमित अभिव्यक्तियों का उपयोग करें" विकल्प का चयन करना चाहते हैं। के बाद आप उस किया है, तो आप इन आपके खोज के रूप में/जानकारी को बदलें हैं:

खोजें:

HttpContext\.Current\.Session\[{("([^"]|\")*")}\] 

बदलें:

HttpContext.Current.Session[\1].ToString() 

अतिरिक्त नोट:

एक बार आपके द्वारा सक्षम नियमित अभिव्यक्ति विकल्प, आप विजुअल स्टूडियो के रेगेक्स वाक्यविन्यास के स्निपेट तक पहुंचने के लिए दाएं-पॉइंटिंग त्रिकोण बटन का उपयोग करने में सक्षम होंगे।

यह भी ध्यान रखें कि विजुअल स्टूडियो का रेगेक्स सिंटैक्स सुंदर यहूदी है, क्योंकि यह विजुअल स्टूडियो 6 (या पहले?) के दिनों से नहीं बदला है - इसलिए किसी भी वाक्यविन्यास तत्वों को मंजूरी के लिए न लें।

उदाहरण के लिए, कोई उम्मीद कर सकता है कि मेरा खोज रेगेक्स ऊपर टूट गया है क्योंकि डबल-कोट से पहले बैकस्लैश ठीक से बच नहीं गया है, लेकिन असल में, डबल-बैकस्लैश डालने से अभिव्यक्ति तोड़ जाएगी, इसे ठीक नहीं किया जाएगा।

+0

टिप के लिए धन्यवाद। मेरे पास है एटवुड ने पहले कुछ समय पहले पोस्ट किया था क्योंकि RegEx दोस्त का एक उग्र उपयोगकर्ता रहा है। मैं विभिन्न RegEx कार्यान्वयन के बीच वाक्यविन्यास अंतर से कभी आश्चर्यचकित नहीं हूँ। सर उठाने के लिए धन्यवाद! –

0

तुम भी http://www.devexpress.com/Products/NET/IDETools/RefactorASP/

पर मुफ्त डाउनलोड उपकरण Refactor उपलब्ध का उपयोग कर यह & की जगह और भी बहुत कुछ बस लगता है की तुलना में है, जो वे और अधिक समझ में आता है नाम के साथ नाम बदलने के सदस्यों को फोन पर विचार कर सकते। इसकी विभिन्न सुविधाएं आसानी से आपके कोड को बेहतर बनाने में आपकी सहायता करेंगी।

2

इनमें से कोई भी उत्तर विजुअल स्टूडियो 2013 में काम नहीं कर रहा है, क्योंकि उस संस्करण ने अंततः मानक RegEx पर स्विच किया है। हालांकि, जो गैर-रेगएक्स विशेषज्ञ हैं या जो पुराने वीएस को ढूंढते हैं/रेगेक्स सिंटैक्स को प्रतिस्थापित करते हैं, वे RegEx शॉर्टकट बटन बहुत उपयोगी पाएंगे।

कृपया सहित अधिक जानकारी के लिए इस उत्तर को देखने/बदलें/उदाहरण के साथ दोनों ओर:

Visual Studio 'Find and Surround With' instead of 'Find and Replace'