ढूँढें और बदलें - गाड़ी वापसी या न्यूलाइन जोड़ें


183

निम्नलिखित स्ट्रिंग के मामले में पार्स किया जाना है।

ford mustang,10,blue~~?bugatti veyron,13,black

मैं ~~?एक के साथ बदलना चाहते हैंcarriage return

\nबस के साथ प्रतिस्थापित स्ट्रिंग जोड़ता है"\n"

यह कैसे किया जा सकता है?

जवाबों:


272

सुनिश्चित करें कि "का उपयोग करें: नियमित अभिव्यक्ति" का चयन और बदलें संवाद में किया जाता है:

खोजें / बदलें संवाद उपयोग नियमित अभिव्यक्ति

ध्यान दें कि विज़ुअल स्टूडियो 2010 के लिए, यह विज़ुअल स्टूडियो उत्पादकता पावर टूल्स के "क्विक फाइंड" एक्सटेंशन में काम नहीं करता है (जुलाई 2011 के अपडेट के अनुसार); इसके बजाय, आपको पूर्ण फाइंड एंड रिप्ले डायलॉग (Ctrl + Shift + H या एडिट -> फाइंड एंड रिप्लेसमेंट -> फाइल्स में बदलें) का उपयोग करने की आवश्यकता होगी और स्कोप को "करंट डॉक्यूमेंट" में बदलना होगा।


5
पाठ ढूंढें के दाईं ओर "प्ले" बटन का उपयोग करना बहुत आसान है
सेल

3
और अगर आप विशेष पात्रों जैसे कि कोष्ठक से मेल खाने की कोशिश कर रहे हैं, तो इसका उपयोग करना न भूलें जैसे कि \)जब नियमित अभिव्यक्तियाँ होती हैं ...
Cel

2
?चरित्र, क्योंकि यह दर्शाता है कि पिछले तत्व वैकल्पिक है Regex में भाग निकले किया जाना चाहिए। इस प्रकार, सही "टेक्स्ट क्या है" पाठ ~~\?एक बैकस्लैश द्वारा भाग गए प्रश्न चिह्न के साथ है। आपने जो उत्तर दिया है वह नमूना पाठ पर काम करता है क्योंकि यह लालच से दूसरी टिल्ड को ढूंढेगा और उसका उपभोग करेगा, हालांकि यदि एक भी टिल्ड पाठ में कहीं भी मौजूद है, तो इसे अनुचित रूप से एक नई रेखा के साथ बदल दिया जाएगा।
एरिक

यदि उत्पादकता पावर उपकरण स्थापित है, तो आप अभी भी देशी विज़ुअल स्टूडियो ढूँढें / बदलें विंडो खोलने के लिए ctrl + shit + h और फिर ctrl + h कर सकते हैं।
Neb

यह ध्यान दिया जाना चाहिए कि यदि "रेगुलर एक्सप्रेशंस का उपयोग करें" का चयन किया जाता है, तो कोई नई स्टोरीलाइन को खोजने (और बदलने) के लिए "\ n" का उपयोग कर सकता है ।
जैकब लॉकार्ड

28

आप \x0d\x0aविजुअल स्टूडियो फाइंड / रिप्लेसमेंट का उपयोग करके कैरिज रिटर्न + लाइन फीड प्राप्त करने के लिए "रेगुलर एक्सप्रेशन एक्सप्रेशन" के साथ "रिप्लेस" बॉक्स के साथ "रिप्लेस" की कोशिश कर सकते हैं । \n(लाइन फ़ीड) का उपयोग कर के रूप में ही है\x0a


13

यदि आप "रेग्युलर एक्सप्रेशंस" फ़्लैग का उपयोग करते हैं तो \ n अनुवाद किया जाएगा। लेकिन ध्यान रखें कि आपको regexp के अनुकूल होने के लिए खोज शब्द को संशोधित करना होगा। आपके मामले में इसे इस तरह बच जाना चाहिए "\ ~ \ ~ \"? (कोई उद्धरण नहीं)।


3
'~' को रेगेक्स में भागने की जरूरत नहीं है। यह एक शाब्दिक चरित्र है। यह गलत है।
ErikE

12

यदि आप नियमित अभिव्यक्ति का उपयोग करते समय अपनी खोज और प्रतिस्थापन स्ट्रिंग में विशेष पात्रों से बचने की परेशानी से बचना चाहते हैं, तो निम्न चरण करें:

  1. अपने मूल स्ट्रिंग के लिए खोज, और, "UniqueString42" से बदलने नियमित अभिव्यक्ति के साथ बंद
  2. "UniqueString42" के लिए खोज और "UniqueString42 \ nUniqueString1337" से बदलने, नियमित अभिव्यक्ति के साथ पर
  3. "UniqueString42" के लिए खोजें और इसे अपने प्रतिस्थापन की पहली पंक्ति (अक्सर अपने मूल स्ट्रिंग) के साथ बदलें, नियमित अभिव्यक्ति बंद
  4. "UniqueString42" के लिए खोज और अपने प्रतिस्थापन की दूसरी पंक्ति के साथ बदलने, नियमित अभिव्यक्ति के साथ बंद

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

उदाहरण

उदाहरण के लिए, यदि आप इसे बदलना चाहते हैं:

public IFoo SomeField { get { return this.SomeField; } }

उस के साथ:

public IFoo Foo { get { return this.MyFoo; } }
public IBar Bar { get { return this.MyBar; } }

आप निम्नलिखित प्रतिस्थापन करेंगे:

  1. public IFoo SomeField { get { return this.SomeField; } }XOXOXOXO(regex बंद )।
  2. XOXOXOXOXOXOXOXO\nHUHUHUHU(regex on )।
  3. XOXOXOXOpublic IFoo Foo { get { return this.MyFoo; } }(regex बंद )।
  4. HUHUHUHUpublic IFoo Bar { get { return this.MyBar; } }(regex बंद )।

@ यदि आपके पास इस समस्या का एक व्यावहारिक समाधान है जो आपकी खोज को मैन्युअल रूप से बचने और पाठ को बदलने के लिए इसे नियमित अभिव्यक्तियों में बदलने से बचता है, और अगले 10 मिनट बिताते हुए उस तरह से राक्षस को ठीक करने में खर्च होता है, तो मुझे यह सुनकर बहुत खुशी होगी। यह, चूंकि मेरा जवाब सिर्फ एक बदसूरत हैक है। लेकिन जैसा कि आप देख सकते हैं, अतिरिक्त प्लग-इन के बिना वेनिला विज़ुअल स्टूडियो पर काम करने वाले अन्य सभी उत्तरों को नियमित अभिव्यक्ति के उपयोग की आवश्यकता होती है, और इस तरह से सरल पाठ से बच जाते हैं।
सुजैन डुपरॉन

2
मेरा मतलब यह नहीं था कि बुरे तरीके से। मेरी क्षमा याचना मैं एक स्माइली लगाना भूल गया: D समाधान के लिए, नहीं, मेरे पास ऐसा कोई भी नहीं है जिसमें VS शामिल है। लेकिन मैंने पाया कि regex (नोटपैड ++ आदि) का समर्थन करने वाला कोई भी सभ्य बाहरी संपादक काफी अच्छा काम करता है।
एलेक्स

2
UltraEdit खोज प्रतिस्थापन का राजा है - यहां आप उन पंक्तियों को चिह्नित करके और खोज शुरू करके, नई सूचियों, लाइनब्रेक या जो कुछ भी खोजते हैं। - जैसा कि आप बदलने के लिए simpy दर्ज करें ^ n के लिए \ n, ^ r for \ r और ^ t for \ t - अगर केवल VS2010 ही ऐसा करेगा :-)
मिरोस

तुम हमेशा पर जा सकते हैं regex101.com यदि आपके खोज स्ट्रिंग शाब्दिक वर्णों का मिलान करने के लिए या रेगेक्स नियंत्रण वर्ण समझ लिया जा रहा है देखने के लिए।
ErikE

7

आप Multiline Search and Replace को Visual Studio मैक्रो का उपयोग कर सकते हैं जो कार्य के लिए अच्छा GUI प्रदान करता है।

यहां छवि विवरण दर्ज करें


कुछ अतिरिक्त चरणों के बिना विजुअल स्टूडियो 2017 के साथ काम करना प्रतीत नहीं होता है, अर्थात "फाइलों में खोजें" पर क्लिक करना होगा फिर उस डायलॉग स्कोप को संशोधित करें, शॉर्टकट डिफ़ॉल्ट f # इंटरएक्टिव है।
मार्क शुल्त्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.