यह कुछ मैं सामान्य रूप से करने के लिए एक regex का उपयोग होता नहीं है, लेकिन मेरी समाधान बिल्कुल नहीं है कि तुम क्या कहते हैं "सुंदर" होगा:
$string = join("", map(ucfirst, split(/(\s+)/, $string)));
कि split()
रों खाली स्थान के द्वारा स्ट्रिंग और सभी कब्जा व्हाइटस्पेस, फिर सूची के प्रत्येक तत्व के माध्यम से जाता है और ucfirst
उन पर (पहला अक्षर अपरकेस बना देता है), फिर join()
उन्हें एक स्ट्रिंग के रूप में एक साथ वापस ले जाता है। भयानक नहीं है, लेकिन शायद आप एक regex अधिक पसंद करेंगे। मैं व्यक्तिगत रूप से \Q
या \U
या अन्य अर्ध-अजीब रेगेक्स संरचनाओं को पसंद नहीं करता हूं।
संपादित करें: किसी और ने उल्लेख किया है कि विराम चिह्न एक संभावित मुद्दा हो सकता है। हैं, कहते हैं, तो आप इस हैं:
...string
यह करने के लिए बदल दिया है:
$string = join("", map(ucfirst, split(/(\w+)/, $string)));
:
...String
यानी आप चाहते हैं शब्द बड़े अक्षरों में उन्हें पहले विराम चिह्न नहीं है, भले ही कुछ इस तरह अधिक की कोशिश
वही बात है, लेकिन यह split()
एस शब्दों पर है (\w+
) ताकि सूची के कब्जे वाले तत्व केवल शब्द ही हों। वही समग्र प्रभाव, लेकिन उन शब्दों को कैपिटल करना होगा जो शब्द वर्ण से शुरू नहीं हो सकते हैं। संख्याओं को पूंजीकृत करने की कोशिश को खत्म करने के लिए \w
[a-zA-Z]
बदलें। और आमतौर पर इसे पसंद करते हैं, हालांकि आप इसे पसंद करते हैं।
स्रोत
2009-03-09 16:17:44
आप क्या करने की कोशिश कर रहे हैं? यदि आप चीजों का शीर्षक केस बनाने की कोशिश कर रहे हैं? इसके लिए एक perlfaq है। –
एसओ पर पूछना तेज़ है, और मुझे यकीन है कि यह Google इंडेक्स के बाद दुनिया में किसी और को लाभ पहुंचाएगा। मैं अक्सर पीएलएल का उपयोग नहीं करता हूं कि मैं उन सभी छोटी चालों को याद कर सकता हूं जिन्हें मैं – Kip