दिलचस्प पोस्ट
टेम्पलेट वर्ग के लिए ओवरलोडिंग मित्र ऑपरेटर << बाश में हत्या के बाद समाप्त संदेश को दबाने के लिए कैसे? क्या एसईओ के अनुकूल यूआरएल वास्तव में एक पृष्ठ की रैंकिंग को प्रभावित करते हैं? Jquery बाइंड डबल क्लिक करें और एकल क्लिक अलग से एंड्रॉइड फेसबुक एकीकरण अमान्य कुंजी हैश एक div की सामग्री को नीचे तक कैसे संरेखित करें? रेखा के अंत गिट में गड़बड़ी हुई – एक बड़ी लाइन समाप्त होने के बाद किसी अन्य शाखा से परिवर्तन कैसे ट्रैक करें? क्यों अहस्ताक्षरित int 0xFFFFFFFF int -1 के बराबर है? मैं रिमोट जीआईटी रिपॉजिटरी में एक नई स्थानीय शाखा कैसे डालूं और उसे ट्रैक भी करूँ? जावास्क्रिप्ट में लूप के अंदर कॉलबैक का उपयोग करते समय, कॉलबैक में उपयोग करने के लिए लूप में अपडेट किए गए वैरिएबल को सहेजने का कोई तरीका क्या है? एक अलग फ़ाइल अजगर से ग्लोबल वैरिएबल लिबसेवीएम में मल्टी-क्लास वर्गीकरण Xcode 4 स्थैतिक लाइब्रेरी निर्भरता से सार्वजनिक हेडर फाइलों को नहीं ढूँढ सकता टैब बार में निचली रेखा सीमा को निकालें? (और चयनित रंग बदलें) जावास्क्रिप्ट के साथ एचटीएमएल फार्म इनपुट टैग नाम तत्व एआरएआर

खाली स्ट्रिंग के साथ गैर-संख्यात्मक बदलें

हमारी परियोजना में आवश्यकता पर त्वरित जोड़ना एक फोन नंबर रखने के लिए हमारे डीबी में एक फ़ील्ड केवल 10 वर्णों को अनुमति देने के लिए सेट है इसलिए, अगर मुझे "(913) -444-5555" या कुछ और पारित हो जाते हैं, तो क्या किसी विशेष प्रकार के फ़ंक्शन के माध्यम से एक स्ट्रिंग चलाने का एक त्वरित तरीका है, जिसे मैं इसे अनुमति देने के लिए वर्णों का सेट दे सकता हूं?

Regex?

Solutions Collecting From Web of "खाली स्ट्रिंग के साथ गैर-संख्यात्मक बदलें"

निश्चय रूप से रेगेक्स:

string CleanPhone(string phone) { Regex digitsOnly = new Regex(@"[^\d]"); return digitsOnly.Replace(phone, ""); } 

या हर बार regex फिर से बनाने से बचने के लिए एक वर्ग के भीतर:

 private static Regex digitsOnly = new Regex(@"[^\d]"); public static string CleanPhone(string phone) { return digitsOnly.Replace(phone, ""); } 

आपके वास्तविक-विश्व इनपुट के आधार पर, आप कुछ अतिरिक्त तर्क चाहते हैं जैसे 1 (लंबी दूरी के लिए) अग्रणी या एक्स या एक्स (एक्सटेंशन्स के लिए) की ओर अग्रसर हो।

आप regex के साथ आसानी से कर सकते हैं:

 string subject = "(913)-444-5555"; string result = Regex.Replace(subject, "[^0-9]", ""); // result = "9134445555" 

आपको रेगेक्स का उपयोग करने की आवश्यकता नहीं है

 phone = new String(phone.Where(c => char.IsDigit(c)).ToArray()) 

यह करने का विस्तार तरीका तरीका यहां है

 public static class Extensions { public static string ToDigitsOnly(this string input) { Regex digitsOnly = new Regex(@"[^\d]"); return digitsOnly.Replace(input, ""); } } 

Regex विधियों का प्रयोग करके। NET आपको किसी भी गैर-संख्यात्मक अंक \ D का उपयोग करने में सक्षम होना चाहिए, जैसे:

 phoneNumber = Regex.Replace(phoneNumber, "\D", ""); 

कैसे एक विस्तार विधि है जो regex का उपयोग नहीं करता है

यदि आप Regex विकल्पों में से किसी एक को चिपकते हैं, तो कम से कम RegexOptions.Compiled स्थिर चर में उपयोग करें।

 public static string ToDigitsOnly(this string input) { return new String(input.Where(char.IsDigit).ToArray()); } 

यह एक विधि समूह में परिवर्तित उस्मान जफर के उत्तर पर बनाता है।

सर्वश्रेष्ठ प्रदर्शन और कम स्मृति की खपत के लिए, यह प्रयास करें:

 using System; using System.Diagnostics; using System.Text; using System.Text.RegularExpressions; public class Program { private static Regex digitsOnly = new Regex(@"[^\d]"); public static void Main() { Console.WriteLine("Init..."); string phone = "001-12-34-56-78-90"; var sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 1000000; i++) { DigitsOnly(phone); } sw.Stop(); Console.WriteLine("Time: " + sw.ElapsedMilliseconds); var sw2 = new Stopwatch(); sw2.Start(); for (int i = 0; i < 1000000; i++) { DigitsOnlyRegex(phone); } sw2.Stop(); Console.WriteLine("Time: " + sw2.ElapsedMilliseconds); Console.ReadLine(); } public static string DigitsOnly(string phone, string replace = null) { if (replace == null) replace = ""; if (phone == null) return null; var result = new StringBuilder(phone.Length); foreach (char c in phone) if (c >= '0' && c <= '9') result.Append(c); else { result.Append(replace); } return result.ToString(); } public static string DigitsOnlyRegex(string phone) { return digitsOnly.Replace(phone, ""); } } 

मेरे कंप्यूटर में परिणाम है:
में इस…
समय: 307
समय: 2178

मुझे यकीन है कि ऐसा करने के लिए एक अधिक कुशल तरीका है, लेकिन मैं शायद ऐसा करूँगा:

 string getTenDigitNumber(string input) { StringBuilder sb = new StringBuilder(); for(int i - 0; i < input.Length; i++) { int junk; if(int.TryParse(input[i], ref junk)) sb.Append(input[i]); } return sb.ToString(); } 

इसे इस्तेमाल करे

 public static string cleanPhone(string inVal) { char[] newPhon = new char[inVal.Length]; int i = 0; foreach (char c in inVal) if (c.CompareTo('0') > 0 && c.CompareTo('9') < 0) newPhon[i++] = c; return newPhon.ToString(); }