2011-02-07 30 views
16

Tôi có một tệp dữ liệu tên và địa chỉ ... tất cả đều là chữ hoa.làm thế nào để sử dụng ruby ​​/ rails để chuyển đổi tất cả các mũ để nắp chữ cái đầu tiên thích hợp, phần còn lại thấp hơn?

Làm cách nào tôi có thể chuyển đổi nó thành đúng để tạo chữ cái hoa đầu tiên, và chữ thường viết hoa còn lại (trừ các tiểu bang, ví dụ)?

Tôi có thể cách ly các trạng thái không đi qua phân tích cú pháp, nhưng đối với phần còn lại, làm thế nào tôi có thể làm điều này cho một ứng dụng ruby ​​trên đường ray?

+0

Hãy nhớ rằng điều này không hợp lý nếu bạn không có thông tin văn hóa cho mỗi tên (và điều đó rất, rất khó xảy ra). –

Trả lời

26

Nếu bạn có thể tách các bang ra, như bạn nói, thật dễ dàng:

my_address_string.titlecase 

Nó sẽ tận dụng các chữ cái đầu tiên của mỗi từ (bao gồm cả một số Tôi thà nó không, như " một "hoặc" các ", nhưng hey ...) và uncapitalize phần còn lại. Âm thanh giống như những gì bạn muốn.

+0

hãy kiểm tra ngay bây giờ! – Angela

+0

@Xavier ... hmmm ... không hoạt động, tất cả đều được viết hoa .....? – Angela

+0

@Angela Thật sao? Thật lạ lùng ... Bạn đang chạy phiên bản Rails nào? Ngoài ra - nó hoạt động trong script/console? Đối với tôi, chạy một cái gì đó chung chung như '" KIỂM TRA PHRASE ".titlecase' trong kịch bản/giao diện điều khiển hoạt động hoàn hảo ... –

1

Câu trả lời của Xavier đang hoạt động đối với tôi trong môi trường Rails 2.3.5. Hoặc bạn có thể thử điều này

my_address_string.downcase.gsub(/(\A|\s)\w/){ |letter| letter.upcase } 
+0

xin lỗi..đó phải là – rubyprince

+0

my_address_string.downcase.gsub (/ (\ A | \ s) \ w /) {| thư | letter.upcase} – rubyprince

Các vấn đề liên quan