سؤال
في روبي، محاولة طباعة العناصر الفردية للسلسلة تسبب لي مشكلة.بدلاً من رؤية كل حرف، أرى قيم ASCII الخاصة به بدلاً من ذلك:
>> a = "0123"
=> "0123"
>> a[0]
=> 48
لقد بحثت عبر الإنترنت ولكن لم أجد أي طريقة لاستعادة الرقم "0" الأصلي منه.أنا جديد بعض الشيء على روبي وأعلم أنه يجب أن يكون شيئًا بسيطًا ولكن يبدو أنني لا أستطيع العثور عليه.
المحلول
أو يمكنك تحويل العدد الصحيح إلى قيمة الحرف الخاصة به:
a[0].chr
نصائح أخرى
تريد [0،1] بدلاً من [0].
أعتقد أن هذا يتغير في Ruby 1.9 بحيث ينتج "asdf"[2] "d" بدلاً من رمز الحرف
كي تختصر:
سيختفي هذا السلوك في الإصدار 1.9، حيث يتم إرجاع الحرف نفسه، ولكن في الإصدارات السابقة، فإن محاولة الإشارة إلى حرف واحد في سلسلة حسب موضع الحرف الخاص بها ستؤدي إلى إرجاع قيمة الحرف الخاص به (وبالتالي فإن "ABC"[2] ترجع 67)
هناك عدد من الطرق التي تقوم بإرجاع نطاق من الأحرف من سلسلة (راجع مستندات روبي على السلسلة طريقة شريحة) جميع الإرجاعات التالية "C":
"ABC"[2,1]
"ABC"[2..2]
"ABC".slice(2,1)
أجد أن محدد النطاق هو الأسهل في القراءة.يمكن لأي شخص أن يتحدث إلى ما إذا كان أقل كفاءة؟
يقوم عامل التشغيل [،] بإرجاع سلسلة إليك، وهو عامل سلسلة فرعية، حيث يقوم عامل التشغيل [] بإرجاع الحرف الذي تعامله روبي كرقم عند طباعته.
أظن 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