سؤال

هذه صفحة ويكي أعطى فكرة عامة عن كيفية تحويل واحد شار إلى ascii http://en.wikibooks.org/wiki/Ruby_Programming/ASCII

ولكن أقول إذا كان لدي سلسلة أردت أن تحصل على كل حرف ascii من ذلك, ماذا يجب أن أفعل ؟

"string".each_byte do |c|
      $char = c.chr
      $ascii = ?char
      puts $ascii
end

أنها لا تعمل لأنها غير سعيدة مع الخط $ascii = ?شار

syntax error, unexpected '?'
      $ascii = ?char
                ^
هل كانت مفيدة؟

المحلول

على c متغير يحتوي بالفعل على الأحرف رمز!

"string".each_byte do |c|
    puts c
end

ينتج

115
116
114
105
110
103

نصائح أخرى

puts "string".split('').map(&:ord).to_s

يرجى الرجوع إلى هذه المقالة التغييرات في ruby1.9 الحصول على حرف ASCII code في روبي باستخدام `?` (علامة استفهام) فشل

روبي سلسلة يوفر codepoints الطريقة بعد 1.9.1.

str = 'hello world'
str.codepoints.to_a
=> [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100] 

str = "你好世界"
str.codepoints.to_a
=> [20320, 22909, 19990, 30028]

استخدام "س".أورد على حرف واحد أو "xyz".مبلغ سلسلة كاملة.

يمكنك أيضا فقط اتصل to_a بعد each_byte أو حتى أفضل سلسلة#بايت

=> 'hello world'.each_byte.to_a
=> [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]

=> 'hello world'.bytes
=> [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]
"a"[0]

أو

?a

سواء سيعود بهم ASCII ما يعادلها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top