Under_score_case को CamelCase में बदलने के लिए नोटपैड ++ का उपयोग करें?


19

मैं खोजने के लिए एनपी ++ में एक नियमित अभिव्यक्ति लिख सकता हूं under_score_case। मैं हाइपर और लोअर केस में हाइलाइट और चयन करके केस को बदलने के लिए NP ++ में TextFX का उपयोग कर सकता हूं।

मैं कैसे उपयोग कर सकते हैं या तो एनपी ++ के ढूँढें / बदलें या TextFX की ढूंढें और इन एक साथ और परिवर्तित सिलाई करने के लिए बदलने के under_score_caseलिए camelCase?

मैं सीखना चाहता हूं कि एनपी ++ में यह कैसे करना है एक स्क्रिप्ट का उपयोग न करें।

नमूना इनपुट:

this is_a_line
some more_data_over_here
whoop de_do_da

वांछित उत्पादन:

this isALine
some moreDataOverHere
whoop deDoDa

अंडरस्कोर मैच करने के लिए रेगेक्स होगा _([a-z])। मुझे लगता है कि प्रतिस्थापन मौजूद है, लेकिन मुझे नहीं मिल रहा है कुछ ऐसा है _\toupper\1

जवाबों:


6

मेरे पास एक समाधान है जो लंबा और जटिल है, लेकिन नोटपैड ++ में काम करेगा। इसके लिए regex, वैकल्पिक रूप से सामान्य खोज और प्रतिस्थापन, साथ ही TextFX का उपयोग करना पड़ता है।

  1. प्रत्येक शब्द के सामने एक प्लेसहोल्डर वर्ण जोड़ें, मैंने चुना Z। यह शायद अल्फ़ाबेटिक होने की ज़रूरत नहीं है, लेकिन यह अंतिम चरण के लिए आसान है। रेगेक्स का उपयोग करते हुए, के साथ खोजें \<([^ ]*)\>और बदलें Z\1
  2. एक अद्वितीय प्लेसहोल्डर अनुक्रम के साथ मौजूदा रिक्त स्थान बदलें। मैंने # स्पेस # चुना। यह रेगेक्स के साथ किया जा सकता है, लेकिन मैं सामान्य या विस्तारित का उपयोग करना पसंद करता हूं।
  3. जगह के साथ अंडरस्कोर बदलें। यदि कोई अंडरस्कोर है जिसे प्रतिस्थापित नहीं किया जाना चाहिए, तो एक कस्टम रेगेक्स संभवतः आवश्यक है। मैंने बस एक सीधी खोज की और प्रतिस्थापित किया।
  4. सभी पाठ का चयन करें, और TextFX मेनू से, का चयन करें TextFX Characters -> Proper Case
  5. अब हमें पहले 3 चरणों को उलटने की आवश्यकता है। रिक्त स्थान खोजें, और उन्हें कुछ नहीं के साथ बदलें। फिर अपने स्पेस प्लेसहोल्डर सीक्वेंस को खोजें, और स्पेस के साथ बदलें। अंत में, रेगेक्स का उपयोग करके, के साथ खोजें \<Z([^ ]*)\>और बदलें \1

वंचित, लेकिन यह काम करता है।
फ्रीहिट

नोटपैड के साथ नोटपैड ++ की विफलताओं ने मुझे पहले की तरह समाधान के साथ आने का कारण बना दिया है, खासकर जब मुझे लाइनों के पार खोजने और बदलने या विशेष वर्णों का उपयोग करने की आवश्यकता होती है, जैसे टैब।
MBraedley

एक तरफ के रूप में, एनपी ++ पर परियोजना का नेतृत्व किया है (श्री हो जैसा कि मुझे याद है) ने विम-जैसे प्रतिस्थापन समर्थन को शुरू करने के बारे में कोई शोर नहीं किया? किसी भी प्लगइन्स का समर्थन करने के लिए? एनपी ++ और टेक्स्टएफएक्स वास्तव में शक्तिशाली हैं, उन्हें बस एक साथ सिलाई करने के लिए थोड़ी अधिक आवश्यकता है।
फ़्रीहिट

मैं वास्तव में परियोजना का पालन नहीं करता, लेकिन मुझे लगता है कि वह सिंटिला के उपयोग से विवश है।
MBraedley

1
एक चेतावनी: यदि प्रत्येक शब्द में दूसरा और बाद का चरित्र एक अपरकेस अक्षर है, तो इसे लोअरकेस किया ALL_CAPSजाता है , उदा allCaps
ग्नूबी

15

एक साधारण खोज / प्रतिस्थापन यह एनपी ++ में करेगा:

खोजें: [_]{1,1}([a-z])

बदलने के: \U$1

आपको काम करने के लिए रिप्लेसमेंट पैनल में 'रेगुलर एक्सप्रेशन' रेडियो बटन का चयन करना होगा।


5
या बस _(.)खोज स्ट्रिंग के रूप में।
डोमिनिक कोम्टिस

यदि आप पास्कलेस चाहते हैं (एक चरण में) तो आप इसका उपयोग कर सकते हैं खोजें: (?:^|_)([a-z]) प्रतिस्थापित करें: \U$1$2
रूबेनिज़्म

6

मैं आमतौर पर अपने आप को एक संपादक के रूप में उपयोग करता हूं। निम्नलिखित नियमित अभिव्यक्ति यह बताती है कि आप क्या करने की कोशिश कर रहे हैं:

%s/_\([a-zA-Z]\)/\u\1/g

जो मैं बता सकता हूं ( मैं थोड़ा के लिए एनपी ++ के साथ बेवकूफ बना दिया ), नोटपैड ++ \uपर्ल रेगेक्स में अपरकेस मैक्रो को नहीं समझता है । आप पूरी तरह से नोटपैड ++ के साथ ऐसा करने में सक्षम नहीं हो सकते हैं। उम्मीद है, कोई मुझे गलत साबित करेगा और आपका दिन बना देगा।


हाँ, मैं एक Windows वातावरण में फंस गया हूँ। डेटा को एक * निक्स या ओएस एक्स मशीन पर कॉपी करना काम करता है, लेकिन यह शायद ही सुंदर है। मैं NP ++ पर अन्य साथियों को भी प्रशिक्षित कर सकता हूं।
फ्रीहिट

मुझे लगता है कि यही अभिव्यक्ति ईमैक्स में काम करती है। मेरा eMac ज्ञान धुंधला है। । ।
सर्फस

@Freiheit खिड़कियों के लिए एक विम है; हालांकि यह एनपी ++ के लिए अन्य टीम के साथियों के साथ मदद नहीं करेगा
मैट्रिक्स मोल

यह वास्तव में नोटपैड ++ के हाल के संस्करणों में ठीक काम करने लगता है (मैं 6.7.7 का उपयोग कर रहा हूं)।
लेवंत ने

3

आप इसे नोटपैड ++ में एक कदम के साथ कर सकते हैं, जो संभवतः अधिक उपयोगी है:

Find: ([a-z]+)[_]?([a-z]?)([a-z]+)[_]?([a-z]?)([a-z]+)[_]?([a-z]?)([a-z]+)\.php
Replace: $1\U$2\L$3\U$4\L$5\U$6\L$7

इसके साथ एकमात्र मुद्दा, यह है कि आपको यह जानने की जरूरत है कि अधिकतम समय अंडर स्कोर मौजूद हो सकता है और स्ट्रिंग कैसे समाप्त होती है। उपरोक्त उदाहरण में, मैं camelCase के लिए php फ़ाइल नामों की जगह ले रहा हूं, यह जानते हुए कि अंडर स्कोर 3 बार से अधिक मौजूद नहीं हो सकता है, कम कोई समस्या नहीं है।


2

मेरा व्यक्तिगत पसंदीदा sed है। यह तेज़ बिजली है:

> इको मेक_मे_कामेल_केस_प्लीज | sed -e 's / (_ [az]) / \ U \ 1 / g' -e 's / _ / g'

makeMeCamelCasePlease

आप जिस फ़ाइल का संपादन कर रहे हैं उस पर प्रतिस्थापित करने के लिए -i विकल्प का उपयोग कर सकते हैं और N ++ को परिवर्तन चुनना चाहिए।

यह भी उपरोक्त सभी समाधानों के साथ, सभी अंडरस्कोर हटा देगा। अगर यह एक मुद्दा है तो तय किया जा सकता है।


2
  • सांप के मामले में परिवर्तित करें मैं नीचे दिए गए चरणों का पालन करते हुए नोटपैड ++ का उपयोग कर सकता हूं।

  • साँप केस इनपुट को सभी लोअरकेस में बदलें, यदि पहले से लोअरकेस में नहीं है

  • बदलें फ़ॉर्म खोलें ( खोजें-> बदलें या Ctrl + H )
  • नियमित अभिव्यक्ति रेडियो बटन की जाँच करें
  • के लिए देखो _([a-z])या_(.)
  • \u\1इनपुट द्वारा प्रतिस्थापित करें

0

मैं नोटपैड ++ 7.3 के साथ काम करता हूं। मुझे एक ही समस्या थी और मैंने निम्नलिखित कार्य किया:

  1. Ctrl+ H(शो फ़ॉर्म खोजें)
  2. नियमित अभिव्यक्ति रेडियो बटन की जाँच करें
  3. «_ ([Az] +)» देखें
  4. «\ U \ 1» से बदलें

और काम किया!


तो यह सभी अक्षरों को निचले हिस्से में बदल देगा , और फिर उन अक्षरों को कैपिटल करेगा जो अंडरस्कोर का पालन करते हैं, है ना? तो We use the bean_counter variable, which was Fred's ideaइसे बदल दिया जाएगा we use the beanCounter variable, which was fred's idea(उन अक्षरों को कम करके जो पहले से ही पूंजीकृत थे)? यह असंतोषजनक लगता है।
स्कॉट

धन्यवाद, स्कॉट, मैं पूरी तरह से विचार को समझ नहीं पाया, इसलिए मुझे आशा है कि अब यह ठीक हो जाएगा।
फ्रांसिस्को एम

हाँ, यह बेहतर है। आप शायद इसे थोड़ा सरल कर सकते हैं: बस «_ ([az])» »(बिना +) देखें। दुर्भाग्य से, यह अब अनिवार्य रूप से पिछले उत्तरों के कई के बराबर है।
स्कॉट

-1

मैं इस समस्या में भाग गया और एक उत्कृष्ट समाधान पाया

  1. सभी अंडरस्कोर ("_") को रिक्त स्थान से बदलें ("")

  2. प्रत्येक शब्द के पहले अक्षर को बड़े अक्षर में बदलें

  3. सभी रिक्त स्थान ("") को रिक्त स्थान ("") से बदलें

  4. किया हुआ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.