2012-03-12 32 views
15

एकल जावा/पर्ल नियमित अभिव्यक्ति खोज और प्रतिस्थापित करने के बाद मैं अंडरस्कोर्स के साथ ऊंट केस नामों में नामों को कैसे परिवर्तित कर सकता हूं?मैं अंडरस्कोर से ऊंट मामले में रेगेक्स के साथ कैसे परिवर्तित कर सकता हूं?

underscore_variable_name -> underscoreVariableName 
UNDERSCORE_VARIABLE_NAME -> underscoreVariableName 
_LEADING_UNDERSCORE -> leadingUnderscore 

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

उत्तर

20

Some Perl examples:

my $str = 'variable_name, VARIABLE_NAME, _var_x_short, __variable__name___'; 

### solution 1 
$_ = $str; 

$_ = lc; 
s/_(\w)/\U$1/g; 

say; 

### solution 2: multi/leading underscore fix 
$_ = $str; 

$_ = lc; 
s/(?<=[^\W_])_+([^\W_])|_+/\U$1/g; 

say; 

### solution 3: without prior lc 
$_ = $str; 

s/(?<=[^\W_])_+([^\W_])|([^\W_]+)|_+/\U$1\L$2/g; 

say; 

आउटपुट:

variableName, variableName, VarXShort, _variable_name__ 
variableName, variableName, varXShort, variableName 
variableName, variableName, varXShort, variableName 
+0

+1: साफ। एकमात्र संभावित क्विबल के बारे में यह है कि '_tea_break'' चायब्रैक 'या '_teaBreak' की बजाय' Tebreak' बन जाएगा। लेकिन वह किसी अंडरस्कोर से शुरू होने वाले नामों का उपयोग करने के लिए सही होगा। –

+0

@ जोनाथन लेफ्लर, आप सही हैं, और यदि कई लगातार अंडरस्कोर का उपयोग किया जाता है तो भी समस्याएं होती हैं। इसे ठीक करने के लिए उत्तर अपडेट किया गया। – Qtax

+1

धन्यवाद, लेकिन क्योंकि यह संपादक खोज में उपयोग के लिए है और संवाद को प्रतिस्थापित करता है, इसलिए मैं इसे एक रेगेक्स का उपयोग करके ऐसा करने के लिए कह रहा था। '_ _ = एलसी' इस बाधा को तोड़ देता है। क्या आप उन्हें गठबंधन करने के तरीके के बारे में सोच सकते हैं? –

2

आप पहले से ही स्ट्रिंग में CamelCase चर है, तो @ Qtax का जवाब उन्हें लोअरकेस कर देगा। यदि आपका चर के सभी लोअर केस under_scored हैं तो आप # 3 के लिए निम्न संशोधन कर सकते हैं: W ->A-Z

's/(?<=[^\A-Z_])_+([^\A-Z_])|([^\A-Z_]+)|_+/\U$1\L$2/g' 
1

Uppercases निम्नलिखित _- पत्र:

s/[_-]([a-z])/\u$1/gr