Tôi đang ở trong tình huống mà tôi cần giá trị ASCII của một ký tự (đối với Project Euler question #22, nếu bạn muốn cụ thể) và tôi đang chạy vào một vấn đề.Nhận mã ký tự ASCII trong Ruby bằng cách sử dụng `?` (Dấu chấm hỏi) không thành công
Là người mới đến hồng ngọc, tôi googled nó, và thấy rằng ?
là con đường để đi: ?A
hoặc bất cứ điều gì. Nhưng khi tôi kết hợp nó vào mã của tôi, kết quả của câu lệnh đó là chuỗi "A"
—không có mã ký tự. Cùng một vấn đề với [0]
và slice(0)
, cả hai đều về mặt lý thuyết sẽ trả lại mã ASCII.
Điều duy nhất tôi có thể nghĩ là đây là vấn đề phiên bản Ruby. Tôi đang sử dụng phiên bản 1.9.1-p0, đã nâng cấp từ 1.8.6 chiều nay. Tôi lừa một chút từ một phiên bản làm việc của Ruby, trong cùng một thư mục, tôi nghĩ rằng có lẽ tôi đã có các tệp không đi kèm với tệp .zip, vì vậy tôi đã không tải xuống chúng.
Vậy tại sao tất cả mã ASCII của tôi lại được chuyển thành các ký tự thực tế?
Chỉ cần hoàn thành, phiên bản 1.9.3 hoặc mới hơn không cần '?' ký tên trước chữ cái, chúng ta có thể nhận được giá trị Integer chỉ với: a.ord – yat0
@polska: Tôi nghĩ rằng bạn có thể đã hiểu lầm. Các ? biểu thị rằng chúng ta muốn ký tự 'a', do đó, viết '? a.ord' cho 97, trong khi chỉ đơn giản viết' a.ord' tìm kiếm một biến hoặc phương thức được gọi là 'a' và sẽ ném một NameError nếu không có gì với tên đó hoặc NoMethodError nếu biến 'a' không chứa một chuỗi. – Chuck
vâng, bạn nói đúng .. Tôi đã hiểu lầm. Nó làm việc với? A.ord hoặc "a" .ord – yat0