Intellij IDEA में निचले मामले के साथ ऊपरी मामले को बदलने के लिए मैं एक रेगेक्स का उपयोग कैसे कर सकता हूं?


92

मैं इस के लिए googled और पता चला है कि अन्य regex पार्सर के साथ कैसे करना है:

http://vim.wikia.com/wiki/Changing_case_with_regular_expressions
http://www.regular-expressions.info/replacecase.html

मैंने ये कोशिश की है और न ही काम कर रहा हूं। एक उदाहरण के रूप में, मैं इसे बदलने के लिए एक रेगेक्स का उपयोग करना चाहता हूं:

private String Name;
private Integer Bar = 2;

इसके लिए:

private String name;
private Integer bar = 2;

मैंने कुछ इस तरह की कोशिश की:

replace: private (\S+) (\S+)
with: private $1 $L$2
with: private $1 \L$2
with: <etc.>

उनमें से कोई भी काम नहीं करता है। क्या इंटेलीज में ऐसा करना संभव है, या यह एक गायब विशेषता है? यह केवल शैक्षिक उद्देश्यों के लिए है और उदाहरण से वंचित है। मैं सिर्फ यह जानना चाहता हूं कि क्या यह इंटेलीज में संभव है।


3
क्या कोई कारण है कि आप रेगेक्स का उपयोग करना चाहते हैं? IntelliJ के पास ऐसा करने के लिए एक हॉटकी शॉर्टकट है।
ajp15243

@ ajp15243 यह सिर्फ शैक्षिक उद्देश्यों के लिए है और इसका उदाहरण दिया गया है। मैं सचमुच जानना चाहता हूं कि क्या इंटेलीज में ऐसा करना संभव है।
डैनियल कपलान

3
काफी उचित! बस सुनिश्चित करना चाहता था। मुझे IntelliJ Regex Syntax संदर्भ मिला , और टिप्पणियों में, कोई आपके जैसा ही प्रश्न पूछना चाहता है। एक मॉडरेटर ने उत्तर दिया (और मुझे लगता है कि थोड़ा गलत समझा गया), लेकिन उत्तर बताता है कि यह इंटेलीजे के रेगेक्स सिंटैक्स के साथ संभव नहीं है।
ajp15243

आप हमेशा उसके लिए एक प्लगइन लिख सकते हैं।
मेओ

1
@tieTYT गाओगॉन्ग बहुत अच्छा है, मैं उसे उसके पास होने दूँगा :)।
ajp15243

जवाबों:


174

IDEA 15 में आप कैप्चर किए गए भावों के मामले को टॉगल करने के लिए नीचे दिए गए स्विच का उपयोग करने में सक्षम हैं। यह अब आधिकारिक रूप से प्रलेखित है क्योंकि यह संस्करण जारी किया गया था।

  • \l: एक अगले चरित्र के मामले को कम
  • \u: एक अगले चरित्र का मामला
  • \L: \Eप्रतिस्थापन स्ट्रिंग के अंत तक अगले वर्णों के मामले को कम करें
  • \U\Eप्रतिस्थापन स्ट्रिंग के अंत तक अगले वर्णों का मामला
  • \E: एक मामले परिवर्तन का अंत द्वारा शुरू \Uया\L

यहां एक उदाहरण का उपयोग किया गया है (जैसा कि दस्तावेज स्पष्ट नहीं है):

खोजें: (\ w + _) + (\ w +) प्रतिस्थापित करें: \ L $ 1 $ 2 \ E

उपरोक्त आदि में परिवर्तित FOO_BAR_BAZहो जाएगा foo_bar_baz। $ 1 पहले पाए गए कैप्चर ग्रुप (कोष्ठक में), $ 2 से दूसरे सेट आदि को संदर्भित करता है।

पोस्टीरिटी के लिए: यह शुरू में @gaoagong द्वारा रिपोर्ट किया गया था और वहां प्रलेखित किया गया था


13

उत्तर की खोज की और फिर महसूस किया कि @ ajp15243 ने पहले ही इसका उत्तर दिया है। किसी पत्र के मामले को बदलने के लिए अपने रेगेक्स रिप्लेसमेंट फ़ीचर का उपयोग करके वर्तमान में इंटेलीज में कोई रास्ता नहीं है। सुविधा के बारे में निम्नलिखित URL पर एक छोटी चर्चा है।

http://www.jetbrains.com/idea/webhelp/regular-expression-syntax-reference.html

आप यहाँ Youtrack समस्या में भी वोट दे सकते हैं:

http://youtrack.jetbrains.com/issue/IDEA-70451

एक रेगेक्स Intellij प्लगइन है, लेकिन अफसोस यह भी कम और ऊपरी आवरण का समर्थन नहीं करता है।

http://plugins.jetbrains.com/plugin/19?pr=idea

आपको उन्हें सही ढंग से प्रतिस्थापित करने के लिए केवल पर्ल प्रोग्राम के माध्यम से फ़ाइलों को चलाना पड़ सकता है।


1
Youtrack के अनुसार, यह IntelliJ के संस्करण 15 में जोड़ा जा रहा है
केविन शीहान

6

मैंने आइडिया विम प्लगइन का उपयोग करना शुरू कर दिया और विम में इस तरह की चीजें करना सीखता हूं। इस तरह मैं आइडिया के बाहर इन कौशलों का फिर से उपयोग कर सका।

यहाँ आप क्या करने के लिए कहा विम आदेश है।

:%s/private\s\(\w*\)\s\(w*\)/private \1 \L\2/g

आईडीई के भीतर रेगेक्स दर्ज किया जा रहा है। रीमिक्स पैटर्न को विम में भागने के लिए अतिरिक्त स्लैश की आवश्यकता होती है।

आईडीई के भीतर

आईडीई के भीतर से प्लगइन का पता लगाएं। यहां छवि विवरण दर्ज करें


2
विशाल वर्कअराउंड जो शायद यहाँ के 99% लोगों की मदद नहीं करेगा क्योंकि वे VIM एमुलेशन का उपयोग नहीं करना चाहेंगे। लेकिन, मैं पहले से ही इस प्लगइन स्थापित किया हुआ है तो यह मेरे लिए काम करता है :)
डैनियल Kaplan

1
मुझे पता है .. किसी आईडीई का उपयोग करके किसी को भी शुरू में वी और विम बुरी तरह बेकार लगते हैं। मैंने आखिरकार सर्वर में उन सभी का सामना करने के बाद वीआई सीखना शुरू कर दिया। मुझे यह पसंद आया कि अब मुझे माइंडसेट्स स्विच करने की ज़रूरत नहीं है क्योंकि मैं टूल्स के बीच चलती हूँ।
चिन्तो

मैं अभी इसके साथ शुरू कर रहा हूं, अभी तक धाराप्रवाह नहीं। क्या आपको लगता है कि आप Inteliij-IDEA में IDEAVim के साथ अधिक उत्पादक संपादन कर रहे हैं इससे पहले कि आप वीआई का उपयोग करते हैं?
डैनियल कपलान

1
अधिक से अधिक .. मैं ग्रहण के साथ अच्छा हुआ करता था। फिर Intellij में चले गए और यह अधिकांश चालें सीखीं। तब एहसास हुआ कि विम मुझे सर्वर और वर्कस्टेशन पर एक बार में अच्छा बना देगा। मैं यह भी देख रहा हूँ कि विम पाठ हेरफेर और नेविगेशन में कहीं अधिक शक्तिशाली है। मैं अभी भी आईडीई के सभी विशिष्टताओं जैसे आईडीई विशेषणों का उपयोग करता हूं, जैसे कि रिफैक्टिंग और संदर्भ ढूंढना और डीफ़ जाना आदि। हालांकि मोड के बीच टॉगल करना बहुत महत्वपूर्ण है।
चिन्तो

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