2015-05-07 7 views
5

से पैटर्न में मिलान करने के लिए कैसे जांचें, मुझे आश्चर्य है कि स्ट्रिंग्स के सबस्ट्रिंग पैटर्न से मेल खाने के लिए कोई ग्रोवी-तरीका है या नहीं।स्ट्रिंग के सरणी के सबस्ट्रिंग को अन्य स्ट्रिंग सरणी

उदाहरण के लिए मैं तार सूची (या सरणी) है:

def Errors = ['File xyz cannot be created: No space left on device', 'File kjh has errors: some_error']

तो मैं तार की सूची है, उदाहरण के लिए def Patterns = ['Tests failed', 'No space left on device', 'Something goes wrong', ...some strings... ]

मैं अगर सूची Patterns के कुछ तत्व हैं जाँच करने के लिए चाहते हैं Errors तत्वों के सबस्ट्रिंग्स।

उस उदाहरण में यह सच होना चाहिए, क्योंकि Patterns में No space left on device और Errors'File xyz cannot be created: No space left on device' है।

मुझे पता है कि लूप और विधि contains के लिए दो का उपयोग करके इसे बहुत ही कमजोर और कुशल नहीं है, लेकिन मुझे पता है कि ग्रोवी के पास अधिक शक्तिशाली अंतर्निहित विधियां हैं। मैंने findAll() के साथ प्रयास किया है, लेकिन यह बिल्कुल काम नहीं करता है।

क्या आपके पास कोई विचार है? क्या इसे और अधिक चालाक बनाने का कोई तरीका है?

उत्तर

4

स्पष्ट रूप pattern और error नामकरण:

patterns.find { pattern -> errors.find { error -> error.contains(pattern) } } // -> No space left on device 
patterns.any { pattern -> errors.find { error -> error.contains(pattern) } } // -> true 

क्या/कितने आप ढूंढना चाहते हैं पर निर्भर करता है।

या भी कम:

patterns.find { errors.find { error -> error.contains(it) } } 
patterns.any { errors.find { error -> error.contains(it) } } 
संबंधित मुद्दे