c# - USPS राज्य संकेताक्षर के खिलाफ स्ट्रिंग मान्य करें




usps tracking (3)

एक हैशसेट <स्ट्रिंग> सबसे आसान तरीका है जो मैं अंतर्निहित प्रकारों का उपयोग करने के बारे में सोच सकता है .NET 3.5। (आप आसानी से इसे केस-असंवेदनशील भी बना सकते हैं, या इसे एक शब्दकोश <स्ट्रिंग> स्ट्रिंग> में बदल सकते हैं जहां मान पूर्ण नाम है। यह भी। NET 2.0 / 3.0 के लिए सबसे उपयुक्त समाधान होगा।)

गति के लिए - क्या आप वास्तव में मानते हैं कि यह आपके कोड में एक बाधा होगी? एक हैशसेट "बहुत अच्छी" प्रदर्शन करने की संभावना है (कई लाखों लुकअप एक सेकंड) मुझे यकीन है कि विकल्प भी तेज़ होंगे - लेकिन डर्टीयर मैं सरलतम चीज़ से चिपक जाता हूं जो तब तक काम करता है जब तक आपके पास यह विश्वास करने का कारण नहीं होता कि यह एक बाधा है।

(स्पष्ट रूप से शब्दकोश <,> का उल्लेख करने के लिए संपादित किया गया।)

मुझे संभावित संयुक्त राज्य डाक सेवा राज्य संक्षिप्त सूची की एक सूची के विरुद्ध स्ट्रिंग को सत्यापित करने में सक्षम होने की आवश्यकता है और Google मुझे कोई दिशा नहीं दे रहा है

मैं स्पष्ट समाधान के बारे में जानता हूं: और यह सभी 50 राज्यों से तुलना करने और तुलना करने के लिए अगर (या स्विच) कथन को एक भयंकर रूप से बड़ा कोड देना है, लेकिन मैं स्टैक ओवरफ्लो पूछ रहा हूं, क्योंकि यह करने का एक आसान तरीका होना चाहिए। क्या कोई रेगएक्स या एक एंजेटर ऑब्जेक्ट है जो मैं इसे जल्दी से सबसे प्रभावी तरीके से करने के लिए इस्तेमाल कर सकता हूं?

[सी # और शुद्ध 3.5 जिस तरह से]

यूएसपीएस स्टेट संकेताक्षर की सूची


मुझे ऐसा कुछ पसंद है:

private static String states = "|AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|TX|UT|VT|VI|VA|WA|WV|WI|WY|";

public static bool isStateAbbreviation (String state)
{
  return state.Length == 2 && states.IndexOf( state ) > 0;
}

इस पद्धति का उपयोग ऑप्टिमाइज्ड सिस्टम रूटीन का उपयोग करने के लिए किया गया है जो संभवतः खोज करने के लिए एक मशीन अनुदेश का उपयोग कर रहा है। अगर मैं गैर-निश्चित लम्बाई शब्दों के साथ काम कर रहा था, तो मैं "|" + राज्य + "|" यह सुनिश्चित करने के लिए कि मैंने पूर्ण मिलान की बजाय उपस्ट्रिंग नहीं मारा। स्ट्रिंग संयोजन के कारण, यह थोड़ी देर तक लगेगा, लेकिन यह अभी भी एक निश्चित समय में मैच होगा। यदि आप लोअरकेस संकेताक्षर के साथ-साथ अपरकेस को भी मान्य करना चाहते हैं, तो या तो राज्य के लिए जांच करें। अपपरकैस (), या 'राज्यों' स्ट्रिंग को दोहराएं जिसमें लोअरकेस वेरिएंट शामिल होंगे।

मैं गारंटी देता हूं कि यह हर बार रेजेक्स या हैशटैब लाइट को हरा देगा, चाहे आप कितने रन बनाते हों, और इसमें कम से कम मेमरी उपयोग हो।


यहाँ एक regex है का आनंद लें!

^(?-i:A[LKSZRAEP]|C[AOT]|D[EC]|F[LM]|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEHINOPST]|N[CDEHJMVY]|O[HKR]|P[ARW]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$






.net