سؤال

في روبي، محاولة طباعة العناصر الفردية للسلسلة تسبب لي مشكلة.بدلاً من رؤية كل حرف، أرى قيم 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)

أجد أن محدد النطاق هو الأسهل في القراءة.يمكن لأي شخص أن يتحدث إلى ما إذا كان أقل كفاءة؟

@ كريس,

هذه هي الطريقة التي يتم بها تعريف [] و [،] لفئة السلسلة.

تفحص ال سلسلة API.

يقوم عامل التشغيل [،] بإرجاع سلسلة إليك، وهو عامل سلسلة فرعية، حيث يقوم عامل التشغيل [] بإرجاع الحرف الذي تعامله روبي كرقم عند طباعته.

أظن 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top