Tôi đang tìm cách phân tích cú pháp số thứ tự (thứ nhất, thứ hai, thứ ba, vv) trong Ruby và chuyển đổi chúng thành số nguyên. Bạn có biết bất kỳ thư viện nào làm điều này không?Có một gem hoặc thư viện Ruby cung cấp cách phân tích cú pháp các số thứ tự không?
Trả lời
Tôi đã nửa chừng khi đặt câu hỏi này khi tôi nhận ra rằng đá quý chronic
thực hiện điều này như là một phần của quá trình phân tích ngày tháng. Sau khi cài đặt đá quý, bạn có thể chuyển đổi số thứ tự để nguyên khá dễ dàng:
irb(main):001:0> require 'chronic'
=> true
irb(main):002:0> Chronic::Numerizer.numerize("eighty-fifth").to_i
=> 85
Edit: Thật không may, có vẻ như chronic
không theo đúng thứ tự phân tích "thứ hai":
irb(main):003:0> Chronic::Numerizer.numerize("twenty-second").to_i
=> 20
Lý do cho điều này là chronic
được thiết kế để phân tích ngày tháng và thời gian và "giây" có thể là số thứ tự hoặc đơn vị thời gian trong ngữ cảnh đó. Để giải quyết vấn đề này, bạn có thể khỉ vá chronic
's Numerizer
lớp với dòng này:
Chronic::Numerizer::ORDINALS.insert(1, ['second', '2'])
Bây giờ nó hoạt động:
irb(main):005:0> Chronic::Numerizer.numerize("eighty-second").to_i
=> 82
Nếu bạn đang thực sự sử dụng chronic
cho mục đích của mình, mặc dù bạn có thể sẽ không muốn vít với ruột của nó. Trong trường hợp đó, bạn có thể sao chép source code từ Chronic::Numerizer
vào một lớp mới và sử dụng lớp đó thay thế. Đừng quên thêm ['second', '2']
vào hằng số ORDINALS
trong lớp mới.
Có một viên ngọc được gọi là numerouno dường như được nhắm mục tiêu cụ thể vào điều này, nếu Chronic không phù hợp với trường hợp sử dụng của bạn.
Đó dường như chỉ để xử lý hồng y số (một, hai, ba, vv), không phải số thứ tự (thứ nhất, thứ hai, thứ ba). Tuy nhiên có vẻ khá hữu ích. – Ajedi32
Doh, bạn nói đúng. Lấy làm tiếc! –
Tôi đã sử dụng đá quý được gọi là deordinalize (https://rubygems.org/gems/deordinalize) mà dường như thực hiện thủ thuật độc đáo - chỉ cần đảm bảo bạn viết hoa trước khi gọi;
>> require 'deordinalize'
>> 'Forty-Second'.downcase.deordinalize
=> 42
Để phân tích một cách chính xác những thứ "thứ hai": bạn có bây giờ để con khỉ vá Numerizer lớp với dòng này
SINGLE_ORDINALS.insert(1, ['second', 2])
- 1. Có thư viện ngữ pháp phân tích cú pháp (PEG) nào cho Javascript hoặc PHP không?
- 2. Linter cung cấp lỗi "Lỗi phân tích cú pháp URL"
- 3. Phương tiện phân tích cú pháp Thư viện C++
- 4. Có một thư viện Python tốt có thể phân tích cú pháp C++ không?
- 5. Phân tích cú pháp các tệp nhị phân MIPS: có thư viện Python để phân tích cú pháp dữ liệu nhị phân không?
- 6. Thư viện phân tích cú pháp tên Java?
- 7. Đặc điểm tệp/thư viện phân tích cú pháp .blg
- 8. Phân tích cú pháp nhị phân hoặc tuần tự hóa?
- 9. Thư viện phân tích cú pháp SQL cho Python
- 10. Phân tích cú pháp Atom & RSS trong Ruby/Rails?
- 11. Kết hợp phân tích cú pháp phân tích cú pháp, phân tích cú pháp và phân tích cú pháp rừng
- 12. Thư viện trình phân tích cú pháp toán học Javascript
- 13. Thư viện C để phân tích cú pháp Ngày giờ
- 14. Có thư viện Java nào để phân tích cú pháp các tệp PO gettext không?
- 15. Có ai biết thư viện trong Java có thể phân tích cú pháp ESRI Shapefile không?
- 16. Thư viện trình phân tích cú pháp nguồn cấp dữ liệu RSS trong Python
- 17. có thư viện nào để phân tích cú pháp địa chỉ ở Hoa Kỳ không?
- 18. Cách phân tích cú pháp một số nguyên trong PHP?
- 19. Phân tích cú pháp Ruby: phân tích cú pháp nhiều dòng
- 20. Thư viện C để phân tích cú pháp các ngày gần đúng
- 21. Thư viện Java để phân tích cú pháp tham số dòng lệnh?
- 22. Phân tích cú pháp tài liệu XML trong Ruby
- 23. Có thư viện phân tích cú pháp PDF miễn phí nào hoạt động trong Android không?
- 24. Ruby có cung cấp một phương thức để hiển thị các cuộc gọi phân cấp không?
- 25. Phân tích cú pháp không phân tích cú pháp đúng cách ("href") trong IE
- 26. Số phân tích cú pháp có hậu tố âm
- 27. Phân tích cú pháp HTML với Erlang
- 28. Phân tích cú pháp từng tham số
- 29. Có cách nào dễ dàng để cài đặt thư viện Lisp như ruby gem (Ruby) hoặc easy_install (Python) không?
- 30. Cách phân tích cú pháp cây thư mục trong python?
Great job trên trả lời câu hỏi của riêng bạn :) –