2008-08-27 13 views
16

रूबी में, स्ट्रिंग के अलग-अलग तत्वों को मुद्रित करने का प्रयास करने से मुझे परेशानी हो रही है। इसके बजाय हर किरदार को देखने का, मैं उनकी ASCII मूल्यों दिखाई दे रही है बजाय:रूबी - स्ट्रिंग को पूर्णांक में कनवर्ट करें

>> a = "0123" 
=> "0123" 
>> a[0] 
=> 48 

मैं ऑनलाइन देखा है लेकिन मूल "0" इसे वापस से बाहर निकलने के लिए किसी भी तरह नहीं मिल रहा। मैं रुबी के लिए थोड़ा नया हूं, मुझे पता है कि यह कुछ आसान होना है, लेकिन मुझे लगता है कि मुझे यह नहीं लगता है।

उत्तर

15

या आप अपने चरित्र मूल्य के लिए पूर्णांक परिवर्तित कर सकते हैं:

a[0].chr 
7

आप चाहते हैं एक [0,1] के बजाय एक [0]।

6

मेरा मानना ​​है कि इस रूबी 1.9 में बदल रहा है ऐसा है कि "asdf" [2] पैदावार "डी" के बजाय चरित्र कोड

1

@Chris है,

कि बस गया है कि कैसे [] और [,] परिभाषित कर रहे हैं स्ट्रिंग कक्षा के लिए।

बाहर String API चेक।

1

[,] ऑपरेटर एक स्ट्रिंग आपसे देता है, यह सबस्ट्रिंग ऑपरेटर, जहां के रूप में [] ऑपरेटर चरित्र देता है जो रूबी इसे प्रिंट करते समय एक संख्या के रूप में व्यवहार करता है।

5

संक्षेप में:

यह व्यवहार संस्करण 1.9 में समाप्त होने वाली है, जिसमें चरित्र ही दिया जाता है, लेकिन पिछले संस्करणों में, अपने चरित्र की स्थिति वापस आ जाएगी द्वारा एक तार का एक एकल वर्ण को संदर्भित कर रहा है अपने चरित्र मान (इसलिए "एबीसी" [2] 67 लौटाता है)

ऐसी कई विधियां हैं जो स्ट्रिंग से वर्णों की एक श्रृंखला लौटाती हैं (स्ट्रिंग slice method पर रूबी दस्तावेज़ देखें) निम्न में से सभी "सी" :

"ABC"[2,1] 
"ABC"[2..2] 
"ABC".slice(2,1) 

मुझे पढ़ने के लिए सबसे आसान होने के लिए श्रेणी चयनकर्ता मिल गया है। क्या कोई यह बात कर सकता है कि यह कम कुशल है या नहीं?

0

मैं each_char या chars बेहतर आप क्या चाहते हैं का वर्णन करता है लगता है।

irb(main):001:0> a = "0123" 
=> "0123" 
irb(main):002:0> Array(a.each_char) 
=> ["0", "1", "2", "3"] 
irb(main):003:0> puts Array(a.each_char) 
0 
1 
2 
3 
=> nil