2012-02-27 11 views
51

ऐरे के लिए, तत्वों के अनुक्रम को पुनर्व्यवस्थित करने के लिए एक सुंदर sort विधि है। मैं स्ट्रिंग के लिए एक ही परिणाम प्राप्त करना चाहता हूं।स्ट्रिंग के अक्षरों को वर्णानुक्रम से कैसे क्रमबद्ध करें?

उदाहरण के लिए, मेरे पास एक स्ट्रिंग str = "String" है, मैं इसे "ginrSt" पर एक सरल विधि के साथ क्रमबद्ध रूप से क्रमबद्ध करना चाहता हूं।

क्या इसे सक्षम करने का कोई मूल तरीका है या क्या मुझे Enumerable से मिश्रण शामिल करना चाहिए?

उत्तर

111

chars method स्ट्रिंग के वर्णों की गणना देता है।

str.chars.sort.join 
#=> "Sginrt" 

insensitively मामले क्रमबद्ध करने के लिए:

str.chars.sort(&:casecmp).join 
#=> "ginrSt" 
+17

या 'str.chars.sort (&: casecmp) .join' – tokland

13
इसके अलावा

(सिर्फ मनोरंजन के लिए)

str = "String" 
str.chars.sort_by(&:downcase).join 
#=> "ginrSt" 
2
str.unpack("c*").sort.pack("c*") 
+3

इसमें कुछ स्पष्टीकरण जोड़ें। आप वास्तव में क्या कहने की कोशिश कर रहे हैं? –

1

आप सॉर्ट करने के लिए एक सरणी में स्ट्रिंग बदल सकता है:

'string'.split('').sort.join 
संबंधित मुद्दे