2012-11-02 17 views

Trả lời

4

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.

+1

Great job trên trả lời câu hỏi của riêng bạn :) –

1

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.

+0

Đó 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

+0

Doh, bạn nói đúng. Lấy làm tiếc! –

0

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 
0

Để 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]) 
Các vấn đề liên quan