Đây là một phiên bản sử dụng tôi đã viết chia:biểu Scala để thay thế một phần mở rộng tập tin trong một chuỗi
fileName.split('.').init ++ Seq("js") mkString "."
này biến đổi ví dụ foo.bar.coffee
vào foo.bar.js
.
Những gì tôi thích:
- nó hoạt động
- nó không dựa trên những thứ như
indexOf()
- nó cảm thấy chức năng;)
Những gì tôi không thích:
- không ngắn như tôi mong đợi
- nó có thể gây nhầm lẫn cho một số độc giả
Làm cách nào để viết phiên bản đơn giản/đơn giản hơn?
CẬP NHẬT: Câu trả lời tuyệt vời bên dưới! Nói tóm lại:
- có vẻ như cách tiếp cận ban đầu của tôi ở trên là không xấu mặc dù nó không bao gồm một số trường hợp góc, nhưng đó là fixable với một biểu thức lâu hơn nếu bạn cần để trang trải những
- khác, cách tiếp cận hơi ngắn hơn sử dụng regexps, mà sẽ được nhiều hơn hoặc ít có thể đọc tùy thuộc vào nền regexp của bạn
một cú pháp hơi ngắn hơn cho cách tiếp cận ban đầu (trường hợp góc không được đề cập) lần đọc:
fileName.split('.').init :+ "js" mkString "."
Đối với hồ sơ, điều này rất đơn giản với tôi. –
Tôi đồng ý với Rafe. Cá nhân tôi thích nó tốt hơn so với các phiên bản biểu thức thông thường. Tuy nhiên, nó không hoạt động tốt với các tên tệp không có phần mở rộng. Bạn có thể loại bỏ '++ Seq (" js ")' bằng cách thay thế nó bằng ': +" js "', nhân tiện. – Madoc
Hãy nhớ rằng tùy thuộc vào những gì bạn muốn làm, các tệp có tiện ích mở rộng đôi không được xử lý "chính xác", ví dụ: 'x.tar.gz' trở thành' x.tar.js' – Raphael