2015-12-16 10 views
8

मुझे आश्चर्य है कि फ़ाइल नाम से फ़ाइल एक्सटेंशन को निकालने के लिए "ग्रोवी" तरीका है या नहीं।ग्रोवी तरीका?

वर्तमान समाधान पैकेज कब Apache Commons पर निर्भर करता है:

filename[0..<filename.lastIndexOf('.')] 

पिछले . स्ट्रिंग में के बाद सब कुछ निकालने के लिए:

import org.apache.commons.io.FilenameUtils 

String filename = '/tmp/hello-world.txt' 
def fileWithoutExt = FilenameUtils.removeExtension(filename) 
+0

जब तक कि आप पूरे commons.jar से छुटकारा नहीं लेना चाहते हैं - एक (युद्ध-कठोर) लाइब्रेरी फ़ंक्शन का उपयोग करने में क्या गलत है? – cfrick

उत्तर

14

आप कुछ इस तरह कर सकते हैं।

या थोड़ा खूबसूरत:

filename.take(filename.lastIndexOf('.')) 
+1

दिए गए उदाहरण में आप अपनी पसंद की किसी भी सबस्ट्रिंग विधि का उपयोग कर सकते हैं लेकिन सामान्य स्थिति में कोई एक्सटेंशन नहीं हो सकता है और कुछ मामलों में निर्देशिकाओं में "।", उदाहरण के लिए लिनक्स में छिपी हुई निर्देशिकाएं होती हैं। –

2

इस मामले में overkill हो सकता है, लेकिन मैं

को mixins के रूप में आम वर्गों का एक बहुत

String.metaClass.mixin org.apache.commons.io.StringUtils 
String.metaClass.mixin org.apache.commons.io.FilenameUtils 
etc 

यह तो आप की अनुमति देता है के इलाज के लिए जाते हैं

String filename = '/tmp/hello-world.txt' 
def fileWithoutExt = filename.removeExtension() 

जो मैं मिश्रण करता हूं वह स्क्रिप्ट की आवश्यकताओं पर निर्भर करता है लेकिन मैं इस पैटर्न का बहुत उपयोग करता हूं। यह मुझे उन विधियों का आसानी से उपयोग करने में सक्षम बनाता है जिनका उपयोग मैं सभी स्थैतिक वर्ग या आयात संदर्भों के बिना करने के लिए करता हूं।