2010-07-18 5 views
5

में अपर मामलों ऊंट मामले को UpperCasedCamelCase एक्सप्लोडिंग अभी, मैं एक विभाजन, टुकड़ा, और विविधता के साथ इस को लागू कर रहा हूँ जब आपके पास 'SometimesPDFFilesHappen' जैसे इनपुट होते हैं, जो मेरा कार्यान्वयन (गलत तरीके से) 'Sometimes P D F Files Happen' के रूप में व्याख्या करेगा।पीएचपी

मैं (बस) मेरी स्क्रिप्ट कोसे 'PDF' पर कैसे जोड़ सकता हूं?

इसे विभाजित करने के लिए मेरी योग्यता पहली पूंजी में शुरू होगी, और अंतिम शब्द को समायोजित करने के लिए अंतिम से पहले समाप्त होगी।

हां, मुझे पता है कि 'ThisIsAPDFTest' में कुछ अस्पष्टताएं हैं, जिन्हें 'This Is APDF Test' के रूप में व्याख्या किया जाएगा। हालांकि, मैं इससे बचने के लिए "स्मार्ट" तरीका नहीं सोच सकता, इसलिए यह एक स्वीकार्य समझौता है।

+0

यह भी देखें: http://stackoverflow.com/questions/3103730/is-there-a-elegant-way-to-parse-a-word-and-add-spaces-before-capital-letters/3103795 # 3103795 –

उत्तर

10
$input = "SomePDFFile"; 

$pass1 = preg_replace("/([a-z])([A-Z])/","\\1 \\2",$input); 
$pass2 = preg_replace("/([A-Z])([A-Z][a-z])/","\\1 \\2",$pass1); 
echo $pass2; 

या, यदि आप 1 बयान होने के बारे में बहुत धार्मिक हैं:

preg_replace("/(([a-z])([A-Z])|([A-Z])([A-Z][a-z]))/","\\2\\4 \\3\\5",$input); 

जो बहुत बदसूरत है।

+1

+1 आपने मुझे एक प्रश्न लिखने और फिर डुप्लिकेट के लिए थप्पड़ मारने से बचाया। – zaf

+0

++; धन्यवाद, यह मेरे सभी यूनिट परीक्षणों को पारित कर दिया है कि अन्य एल्गोरिदम विफल रहे। मुझे वास्तव में रेगेक्स सीखने की जरूरत है। – Dolph

+0

मेरे अपने उद्देश्यों के लिए एक यूनिट परीक्षण जोड़ा गया, और "FoO" को "Fo O" से प्रतिस्थापित करने से रोकने के लिए "/ ([a-z]) ([ए-जेड] [ए-जेड]) (" ए-जेड] [ए-जेड]) के साथ पास 1 पर पहला तर्क बदल दिया गया। – Dolph