हालांकि कई चीजें हैं जिन्हें जेफ के समाधान में सुधार किया जा सकता है।
if (String.IsNullOrEmpty(title)) return "";
आईएमएचओ, इसका परीक्षण करने के लिए जगह नहीं है। यदि फ़ंक्शन एक खाली स्ट्रिंग पास हो जाता है, तो कुछ भी गंभीर रूप से गलत हो जाता है। एक त्रुटि फेंको या बिल्कुल प्रतिक्रिया मत करो।
// remove any leading or trailing spaces left over
… muuuch later:
// remove trailing dash, if there is one
काम दो बार। यह मानते हुए कि प्रत्येक ऑपरेशन एक पूरी नई स्ट्रिंग बनाता है, यह खराब है, भले ही प्रदर्शन कोई मुद्दा न हो।
// replace spaces with single dash
title = Regex.Replace(title, @"\s+", "-");
// if we end up with multiple dashes, collapse to single dash
title = Regex.Replace(title, @"\-{2,}", "-");
फिर, मूल रूप से दो बार काम: सबसे पहले, एकाधिक रिक्त स्थान को एक साथ बदलने के लिए रेगेक्स का उपयोग करें। फिर, एक साथ कई डैश को प्रतिस्थापित करने के लिए फिर से regex का उपयोग करें। दो अभिव्यक्तियों को पार्स करने के लिए, स्मृति में निर्माण करने के लिए दो ऑटोमाटा, स्ट्रिंग पर दो बार पुनरावृत्ति करें, दो स्ट्रिंग बनाएं: इन सभी परिचालनों को एक ही पर ध्वस्त किया जा सकता है।
// make it all lower case
title = title.ToLower();
// remove entities
title = Regex.Replace(title, @"&\w+;", "");
// remove anything that is not letters, numbers, dash, or space
title = Regex.Replace(title, @"[^a-z0-9\-\s]", "");
// replace spaces
title = title.Replace(' ', '-');
// collapse dashes
title = Regex.Replace(title, @"-{2,}", "-");
// trim excessive dashes at the beginning
title = title.TrimStart(new [] {'-'});
// if it's too long, clip it
if (title.Length > 80)
title = title.Substring(0, 79);
// remove trailing dashes
title = title.TrimEnd(new [] {'-'});
return title;
सूचना है कि इस विधि स्ट्रिंग कार्यों जब भी संभव हो के बजाय स्ट्रिंग कार्यों regex कार्य करता है और चार कार्यों के बजाय का उपयोग करता है:
मेरे सिर के ऊपर बंद, किसी भी परीक्षण के बिना, इस एक बराबर समाधान होगा ।
ग्रेट उत्तर धन्यवाद, मैंने यूआरएल = Regex.Replace भी जोड़ा (यूआरएल, @ "<(.|\n)*?>", ""); HTML टैग को "मेरे आलेख" के रूप में हटाने के लिए "मेरे-बार्टिकलब-यहां" चालू हो जाएगा –
एक पथ भी अवधि के साथ समाप्त नहीं हो सकता है। यह भी सुनिश्चित नहीं है कि आप नए [] {'-'} का उपयोग क्यों करते हैं, जब आप केवल '-' का उपयोग कर सकते हैं। –