2011-08-01 14 views
36

वापस कर सकता है क्या split के लिए यह शून्य String[] वापस करने के लिए संभव है? मैं उत्सुक हूं क्योंकि मैं बिना किसी अनावश्यक जांच के अपने कोड में जितना संभव हो उतना रक्षात्मक बनना चाहता हूं।क्या यह संभव है कि जावा स्ट्रिंग.split एक शून्य स्ट्रिंग []

String[] parts = myString.split("\\w"); 

मैं इससे पहले कि मैं parts पद बंटवारे का उपयोग एक अशक्त जांच करने की आवश्यकता है: कोड इस प्रकार है?

उत्तर

44

यह कभी शून्य नहीं देता है। यदि आप सुनिश्चित नहीं हैं तो आपको हमेशा विधि के जावडोक की जांच करनी चाहिए। उदाहरण के लिए String#split(String) कहते

इस विधि से काम करता है के रूप में यदि दो तर्क split विधि

लागू द्वारा ... और String#split(String,int) का कहना है:

तो अभिव्यक्ति किसी भी भाग से मेल नहीं खाता इनपुट के बाद परिणामी सरणी में केवल एक तत्व होता है, अर्थात् यह स्ट्रिंग।

जावाडोक से आप पता लगा सकते हैं अपवाद की तरह हो सकता है क्या और अधिक महत्वपूर्ण क्यों उनमें से किसी अपवाद फेंक दिया गया। यह जांचने के लिए एक बहुत ही महत्वपूर्ण बात यह है कि यदि कक्षाएं धागे सुरक्षित हैं या नहीं।

+0

मैंने जवाडोक की जांच की, शून्य वापस लौटा! = एनपीई फेंक दिया। मैंने पैटर्न अपवाद देखा कि यह फेंक सकता है। – Woot4Moo

+4

'स्प्लिट (स्ट्रिंग रेगेक्स)' के लिए जावाडोक इंगित नहीं करता है कि शून्य को वापस नहीं किया जा सकता है। – Paul

+2

@ पॉल: नहीं, लेकिन अगर 'शून्य' वापस किया जा सकता है, तो यह (या 'पैटर्न # विभाजन' दस्तावेज़) ऐसा कहेंगे।और दो-तर्क संस्करण, जो एकल तर्क कहता है, कहता है * "यदि अभिव्यक्ति इनपुट के किसी भी हिस्से से मेल नहीं खाती है तो परिणामी सरणी में केवल एक तत्व होता है, अर्थात् यह स्ट्रिंग।" * –

1

नहीं, आपको भागों पर शून्य की जांच करने की आवश्यकता नहीं है।

1

स्प्लिट प्रणाली को बुलाती है Patter.split विधि है जो विधि की शुरुआत में यह करता है:

ArrayList<String> matchList = new ArrayList<String>();

और अंत में matchList.toArray करता है() किसी सरणी वापस जाने के लिए।

इसलिए नल की जांच करने की कोई आवश्यकता नहीं है।

+6

कार्यान्वयन को देखने पर कभी भरोसा न करें। कार्यान्वयन बदल सकता है। प्रलेखन वह अनुबंध है जिसका आप काम कर रहे हैं। –

+1

सच .. लेकिन इस विधि को कार्यान्वित करने की संभावना नहीं है, या पूरी जावा दुनिया जिसने इस विधि का उपयोग बिना किसी शून्य जांच के किया है, वह अव्यवस्था में होगा। –

+1

इस मामले में, यह दस्तावेज़ों से स्पष्ट है कि यदि यह बदलता है, तो उसे 'शून्य' वापस नहीं करना चाहिए। –

6

मैं आपको उन समय के लिए जावा स्रोत कोड डाउनलोड करने की सलाह देता हूं जब एपीआई अस्पष्ट है। यहां सभी उत्तरों सिर्फ आपको जवाब बताते हैं लेकिन आपको वास्तव में अपने लिए देखना चाहिए। आप जावा स्रोत कोड here से देख सकते हैं (पृष्ठ के निचले भाग के नजदीक देखें)।

स्रोत कोड का पालन करके आप String[] Pattern.split(CharSequence input, int limit) पर समाप्त हो जाएंगे। वापसी मूल्य गैर-शून्य ArrayList से आता है जिस पर toArray कहा जाता है। toArray शून्य वापस नहीं करता है: खाली सूची की स्थिति में आपको एक खाली सरणी मिल जाएगी।

तो अंत में, नहीं, आपको शून्य की जांच करने की आवश्यकता नहीं है।

+0

टी.जे. देखें। क्रॉउडर की टिप्पणी कहीं और। – EJP

संबंधित मुद्दे