2011-01-27 8 views
6

में एक स्ट्रिंग में लोअरकेस और अपरकेस अक्षरों के बीच की जगह मैं एक स्ट्रिंग में लोअरकेस और अपरकेस के बीच एक जगह जोड़ना चाहता हूं। उदाहरण के लिए:जावास्क्रिप्ट

FruityLoops 
FirstRepeat 

अब मैं लोअरकेस और अपरकेस अक्षरों के बीच एक जगह जोड़ना चाहता हूं। मुझे नहीं पता कि मुझे जावास्क्रिप्ट में कैसे शुरू करना चाहिए। सबस्ट्र या खोज के साथ कुछ? क्या कोई मेरी मदद कर सकता है?

+3

@close मतदाता: वास्तव में किस प्रकार यह एक XSLT सवाल का डुप्लिकेट है ?! –

उत्तर

18
var str = "FruityLoops"; 

str = str.replace(/([a-z])([A-Z])/g, '$1 $2'); 

उदाहरण:http://jsfiddle.net/3LYA8/

+0

+1। संक्षिप्त और सही। –

+0

@ मैट: तय नहीं कर सकता? ; ओ) – user113716

+0

यह चाल है धन्यवाद पैट्रिक! – Frank

3

कुछ है कि जैसे सरल:

"LoL".replace(/([a-z])([A-Z])/g, "$1 $2") 

शायद पर्याप्त है;)

2

आप एक मैनुअल खोज के साथ यह कर सकते हैं, लेकिन यह हो सकता है एक regex के साथ आसान है। मान लिया जाये कि:

  • आप इसे एक पूंजी के साथ शुरू होता है पता
  • आपको लगता है कि राजधानी के सामने एक अंतरिक्ष नहीं करना चाहती
  • आप के सामने एक अंतरिक्ष चाहते हैं सभी बाद राजधानियों
तब

:

function spacey(str) { 
    return str.substring(0, 1) + 
      str.substring(1).replace(/[A-Z]/g, function(ch) { 
     return " " + ch; 
    }); 
} 

alert(spacey("FruitLoops")); // "Fruit Loops" 

Live example

अधिक कुशल संस्करण से प्रेरित (लेकिन से अलग) patrick's answer:

function spacey(str) { 
    return str.substring(0, 1) + 
      str.substring(1).replace(/([a-z])?([A-Z])/g, "$1 $2"); 
} 

alert(spacey("FruityLoops")); // "Fruity Loops" 
alert(spacey("FruityXLoops")); // "Fruity X Loops" 

Live example

+1

+1 FruityJuicyLoops – Aly

+0

जैसे शब्दों के साथ भी काम करेगा, केवल समाधान मैं आसन्न पूंजी अक्षरों के साथ सौदा कर सकता हूं !! +1, अच्छा महोदय। – Aaron

+0

इसका क्या अर्थ है -/([ए-जेड])? ([ए-जेड])/जी, "$ 1 $ 2" ??? छोटे शब्दों की तलाश करें जिनके पास छोटे केस के बाद बड़े केस हैं। छोटा वैकल्पिक है। पहले समूह (छोटे अक्षर) और दूसरे समूह (पूंजी) के बीच एक जगह रखें? – stack1

0

regexp विकल्प सबसे अच्छा लग रहा है। Regexp अधिकार प्राप्त करना हालांकि मुश्किल हो रहा है।

वहाँ की कोशिश करने के लिए कुछ और अधिक जटिल विकल्प के साथ यहाँ एक और सवाल है:

Regular expression, split string by capital letter but ignore TLA

+1

आपके द्वारा लिंक किए गए अधिकांश थ्रेड सी # के लिए विशिष्ट हैं, और जावास्क्रिप्ट में काम नहीं करेंगे। –

संबंधित मुद्दे