2010-01-10 14 views
16

मुझे एक सरणी में शामिल होना पसंद है जिसके परिणामस्वरूप 'अंग्रेजी सूची' होती है। उदाहरण के लिए ['one', 'two', 'three'] परिणाम 'one, two and three' में होना चाहिए।एक 'अंग्रेजी सूची' में सरणी सामग्री में शामिल हों

मैं इसे प्राप्त करने के लिए इस कोड को लिखा था (यह मानते हुए कि सरणी जो मेरी स्थिति में ऐसा नहीं है, खाली नहीं है)

if array.length == 1 
    result = array[0] 
else 
    result = "#{array[0, array.length].join(', ')} and #{array.last}" 
end 

लेकिन मैं सोच रहा था वहाँ मौजूद है या नहीं कुछ 'उन्नत करने के लिए विधि में शामिल होने के इस व्यवहार को प्राप्त करें? या कम से कम कुछ छोटा/अच्छा कोड?

+0

बस सोच रहा है, क्या यह प्रोजेक्ट यूलर है? – Anurag

+1

तो आप पूछ रहे हैं "क्या कोई ऐसी विधि है जो अधिकांश सामानों के लिए एक डिलीमीटर का उपयोग करती है, लेकिन अंतिम तत्व के लिए एक अलग है"? कोर लाइब्रेरी में इसका क्या उद्देश्य होगा? –

+0

@Anurag नहीं, यह प्रोजेक्ट यूलर नहीं है (इस तरह का कोई सवाल नहीं देखा है, लेकिन काफी समय पहले मैंने इसे देखा था), लेकिन भले ही यह मेरे कोड द्वारा हल किया जाए, मुझे लगता है, इसलिए पूछने की कोई आवश्यकता नहीं है ? – Veger

उत्तर

39

इस तरह की एक विधि कोर रूबी में मौजूद नहीं है।

यह है रेल मेंimplemented गया 'सक्रिय समर्थन पुस्तकालय, हालांकि:

['one', 'two', 'three'].to_sentence 
#=> "one, two, and three" 

सीमांकक विन्यास कर रहे हैं, और यह भी रेल का उपयोग करता है' डिफ़ॉल्ट रूप से I18n।

यदि आप ActiveSupport या Rails का उपयोग करते हैं, तो यह करने का पसंदीदा तरीका होगा। यदि आपका आवेदन गैर-रेलवे है, तो आपका कार्यान्वयन अंग्रेजी-केवल उद्देश्यों के लिए ठीक लगता है।

+0

धन्यवाद, यह वही है जो मैं ढूंढ रहा था। मुझे नहीं पता था कि इस तरह की एक विधि रेल (और रुबी नहीं) में लागू की जाएगी या मैंने एक टिप्पणी जोड़ दी होगी कि मैं रेल – Veger

+0

का उपयोग कर रहा था लिंक टूट गया है। और बस वास्तव में नाइट-पिक करने के लिए, आपके संस्करण में ऑक्सफोर्ड कॉमा (दो और तीन के बीच कॉमा) है, जबकि ओपी नहीं है। –

+0

धन्यवाद, लिंक अपडेट किया गया है। जैसा कि मैंने उल्लेख किया है delimiters विन्यास योग्य हैं। मैंने अभी डिफ़ॉल्ट दिखाया। – molf

8

बस एक पठनीयता संकेत के रूप में।

array[0...-1] 

अंतिम तत्व के अलावा सभी को चुनने के लिए लिख सकते हैं।

संपादित करें, निक के सुझाव के साथ कोड उदाहरण अपडेट करें।

+0

यह नहीं पता था कि (मैं रूबी के लिए अभी भी नया हूं), लेकिन यह वास्तव में बेहतर पठनीय – Veger

+0

हम सभी शिक्षार्थी हैं। मैं खुशी से मदद कर सकता है। – akuhn

+1

या 'सरणी [0 ...- 1] ' – Nick

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