2010-01-05 14 views
12

मेरे पास " This is a test " जैसी स्ट्रिंग है। मैं अंतरिक्ष चरित्र द्वारा स्ट्रिंग को विभाजित करना चाहता हूं। मैं इसे इस तरह कार्य करें:स्ट्रिंग को विभाजित करने और व्हाइटस्पेस को कैसे छोड़ें?

puts " This is a test ".strip.each(' ') {|s| puts s.strip} 

परिणाम है:

यह


है एक
परीक्षण
यह एक परीक्षण

वहाँ क्यों है अंतिम पंक्ति "This is a test"? और मुझे इसकी आवश्यकता है, कि यदि दो शब्दों के बीच दो या दो से अधिक स्पेस वर्ण हैं, तो यह "पंक्ति" नहीं लौटाएगा।

मैं केवल एक दिए गए स्ट्रिंग में विभाजित शब्दों को प्राप्त करना चाहता हूं।
क्या किसी के पास कोई विचार है?

उत्तर

41
irb(main):002:0> " This is a test ".split 
=> ["This", "is", "a", "test"] 

irb(main):016:0* puts " This is a test ".split 
This 
is 
a 
test 

str.split(pattern=$;, [limit]) => anArray

पैटर्न शामिल न करने पर, $ का मूल्य; का उपयोग किया जाता है। अगर $; शून्य है (जो डिफ़ॉल्ट है), str को व्हाइटस्पेस पर विभाजित किया गया है जैसे कि '' निर्दिष्ट किया गया था।

+3

"यह एक परीक्षण है" .split – khelll

2

आप

" This is a test ".strip.each(' ') {|s| puts s.strip} 

करना चाहिए आप पिछले नहीं करना चाहते हैं

क्योंकि

irb>>> puts " This is a test ".strip.each(' ') {} 
This is a test 
1

पहले आदेश "कहते हैं" हो जाएगा "यह एक परीक्षण है" प्रत्येक ब्लॉक को निकालने के बाद डाल दिया गया है। पहले "रखता है" छोड़ दें और आप

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

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