2009-03-03 11 views
5

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

तो स्ट्रिंग के अनुभागों को पुनर्प्राप्त करने का सबसे अच्छा तरीका क्या है जो टैब वर्ण द्वारा सीमित हैं। फिलहाल मेरे पास है:

line.split.each do |word| 
... 
end 

लेकिन यह बिल्कुल सही नहीं है।

उत्तर

16

मुझे यकीन है कि मैं काफी अपने प्रश्न समझ में नहीं हूँ, लेकिन अगर आप टैब वर्ण पर लाइनों विभाजित करना चाहते हैं, तो आप निर्दिष्ट कर सकते हैं कि एक तर्क के रूप विभाजित करने के लिए:

line.split("\t").each ... 

या आप इसे के रूप में निर्दिष्ट कर सकते हैं एक रेगुलर एक्सप्रेशन:

line.split(/\t/).each ... 

प्रत्येक मूल रूप से सिर्फ एक सरणी में सभी आइटम के माध्यम से दोहराता है, और विभाजन एक स्ट्रिंग से एक सरणी पैदा करता है।

+0

यह सरल cased के लिए ठीक है। लेकिन * वह * सरल नहीं है। जब सामग्री बाहरी स्रोत से आती है तो किनारे के मामले होते हैं। न्यूलाइन, एस्केप अनुक्रम, उद्धरण इत्यादि अलग-अलग ऐप्स के बीच बहुत अलग हैं। –