मेरे पास स्ट्रिंग क्लास के लिए एक सरल विस्तार विधि है जो स्ट्रिंग से सभी गैर संख्यात्मक वर्णों को पट्टी कर देगी। तो अगर मेरे पास एक स्ट्रिंग है उदाहरण के लिए एक फोन नंबर जैसे "(555) 215-4444" यह इसे "5552154444" में परिवर्तित कर देगा। ऐसा लगता है:विस्तार विधि में शून्य को संभालना
public static string ToDigitsOnly(this string input)
{
Regex digitsOnly = new Regex(@"[^\d]");
return digitsOnly.Replace(input, String.Empty);
}
मैं सोच रहा हूं कि यहां शून्य मूल्य को संभालने का सबसे शानदार तरीका क्या है? क्या इन मामलों में पालन करने के लिए एक सामान्य पैटर्न है, जैसे कि शून्य न हो जाने पर शून्य मूल्य वापस लौटाएं? ऐसा लगता है क्योंकि मैं स्ट्रिंग क्लास को विस्तारित कर रहा हूं, इसलिए मैं शून्य मानों को अनुमति देना चाहता हूं और एक बहस अपवाद नहीं फेंक सकता हूं (क्योंकि जब मैं इसका उपयोग करता हूं तो मैं वास्तव में बहस में गुजर रहा हूं ...)? लेकिन कुछ तर्क दे सकते हैं कि मुझे 'सामान्य' विधि की तरह अपवाद फेंकना चाहिए। आप यहां क्या सबसे अच्छा अभ्यास कर रहे हैं?
धन्यवाद!
मैं एक सामान्य की तरह विस्तार विधि का इलाज होता कर सकते हैं। यह लोगों को कोड पढ़ने के तरीके को साफ करने का एक तरीका है। स्ट्रिंगफंक्शन की बजाय। टोडिगिट्स केवल आप इसे छोटा करने के लिए छोटा करते हैं। टोडडिग्स केवल(), इसलिए यदि आप एक में अपवाद फेंक देंगे, तो इसे दूसरे में फेंक दें। –
यदि शून्य आपके आवेदन में मान्य/अपेक्षित मान है, तो शून्य वापस करें। यदि नहीं, तो अपवाद फेंक दें। व्यक्तिगत रूप से मैं यहां एक ArgumentException फेंक देंगे। – JosephHirn
एक साइड नोट के रूप में; आपको यहां एक रेगेक्स की आवश्यकता नहीं है 'स्ट्रिंग.जॉइन ("", इनपुट। जहां (char.IsDigit)) ' – I4V