सी #, .NET 3.5सी # में एक स्ट्रिंग पार्सिंग; क्या एक क्लीनर तरीका है?
यह सिर्फ बदसूरत की बदबू आ रही है, लेकिन मैं किसी अन्य तरीके से नहीं सोच सकता।
"जो स्मिथ (जेस्मिथ)" (सैन्स उद्धरण) के प्रारूप के साथ एक स्ट्रिंग को देखते हुए, मैं केवल 'जेस्मिथ' स्ट्रिंग को ब्रांड्स के भीतर पार्स करना चाहता हूं।
private static string DecipherUserName(string user)
{
if(!user.Contains("("))
return user;
int start = user.IndexOf("(");
return user.Substring(start).Replace("(", string.Empty).Replace(")", string.Empty);
}
मेरी (अन) रेगुलर एक्सप्रेशन से करने के लिए स्वस्थ घृणा के अलावा,-स्ट्रिंग को पार्स आउट का एक सरल तरीका है: मैं इस के साथ आ गया है?
संपादित करें: स्पष्ट करने के लिए, स्ट्रिंग पार्स करने में हमेशा के लिए किया जाएगा: "जो स्मिथ (jsmith)" (बिना उद्धरण)।
ध्यान दें: मैंने रेगेक्स समाधान पर पैक्स द्वारा रिफैक्टर को स्वीकार किया है, क्योंकि मुझे लंबे समय तक लगता है, यह तब तक अधिक रखरखाव योग्य होगा जब तक कि मैं RegEx में अधिक जानकारी नहीं लेता। उस, और 1000 नामों के त्वरित परीक्षण में .0077423 एमएस पर .1165195 एमएस बनाम स्ट्रिंग समाधान पर RegEx समाधान था। –
इस तरह के एक साधारण पाठ मैच के लिए, आरईएस आमतौर पर धीमे होते हैं (हालांकि उन्हें लूप में अतिरिक्त गति के लिए एक बार संकलित किया जा सकता है)। उनका वास्तविक लाभ अधिक जटिल मामलों के लिए उनकी अभिव्यक्ति के साथ आता है (उदाहरण के लिए, कोष्ठक के अंदर रिक्त स्थान को अनुमति देना और निकालना)। बहुत सीखने लायक है, तो इसे जारी रखें। – paxdiablo