बू आ रही है नीचे दिए गए कोड में एक स्ट्रिंग लेने के लिए और मनमाने ढंग से शब्द का एक सेट है कि एक खोज वाक्यांश के गैर जरूरी माना जाता है के किसी भी दूर करने के लिए बनाया गया है।नेट स्ट्रिंग को पार्स प्रदर्शन में सुधार - संभव कोड
मैं कोड नहीं लिखा था, लेकिन कुछ और में शामिल करने की जरूरत है। यह काम करता है, और यह अच्छा है, लेकिन यह मेरे लिए गलत लगता है। हालांकि, मुझे बॉक्स के बाहर अपना सिर नहीं मिल रहा है कि इस विधि ने एक और दृष्टिकोण के बारे में सोचने के लिए बनाया है।
शायद मैं इसे जितना जटिल होना चाहता हूं उससे अधिक जटिल बना रहा हूं, लेकिन मुझे लगता है कि यह LINQ का उपयोग कर एक अलग तकनीक के साथ क्लीनर हो सकता है।
मैं किसी भी सुझाव का स्वागत करेंगे; जिसमें सुझाव है कि मैं इसे सोच रहा हूं और यह कि मौजूदा कोड पूरी तरह स्पष्ट, संक्षिप्त और निष्पादक है।
private string RemoveNonEssentialWords(string phrase)
{
//This array is being created manually for demo purposes. In production code it's passed in from elsewhere.
string[] nonessentials = {"left", "right", "acute", "chronic", "excessive", "extensive",
"upper", "lower", "complete", "partial", "subacute", "severe",
"moderate", "total", "small", "large", "minor", "multiple", "early",
"major", "bilateral", "progressive"};
int index = -1;
for (int i = 0; i < nonessentials.Length; i++)
{
index = phrase.ToLower().IndexOf(nonessentials[i]);
while (index >= 0)
{
phrase = phrase.Remove(index, nonessentials[i].Length);
phrase = phrase.Trim().Replace(" ", " ");
index = phrase.IndexOf(nonessentials[i]);
}
}
return phrase;
}
आपकी मदद के लिए अग्रिम धन्यवाद:
तो, यहाँ कोड है।
चीयर्स,
स्टीव
मैं भी इनपुट को अलग शब्दों में विभाजित करना पसंद करता हूं। प्रत्येक खोज शब्द पर भावी तर्क लागू करने के लिए भी उपयोगी होगा। जैसे वर्तनी जांच –
यदि प्रदर्शन को अधिकतम करने की आवश्यकता है, तो यह कहने योग्य है कि इस विधि में अभी भी बहुत अक्षमता है। इनपुट स्ट्रिंग को टॉकनाइज करना, स्पष्ट रूप से, कई स्ट्रिंग्स के रूप में बनाएगा क्योंकि इनपुट स्ट्रिंग में शब्द हैं। साथ ही, सरणी बनाने और शब्दों को दोबारा जोड़ने में कुछ समय लग सकता है यदि इनपुट बड़ा है। –
@qstarin: यह मानते हुए कि एक खोज वाक्यांश से अधिक होने की संभावना नहीं है, ओह, लगभग 10 शब्द या तो, मुझे संदेह है कि यह एक महत्वपूर्ण समस्या उत्पन्न करने जा रहा है।'स्टॉप' तर्क के लिए 'हैशसेट' पास करें और यह शब्दों की संख्या से ओ (एन) बन जाता है; इस बिंदु से परे प्रदर्शन के बारे में चिंता करना समयपूर्व अनुकूलन आईएमओ बन जाता है। स्वच्छ, पठनीय कोड के लिए लक्ष्य जो * उचित * पहले प्रदर्शन करता है; फिर, यदि यह पर्याप्त नहीं है, तो आप माइक्रो-ऑप्टिमाइज़ेशन बनाना शुरू कर सकते हैं। –
Aaronaught