यहाँ मेरा प्रस्तुतिकरण है, जोआन और मार्सेल के उत्तरों पर आधारित है। मेरे द्वारा किए गए परिवर्तन इस प्रकार हैं:
- लहजे को हटाने के लिए व्यापक रूप से स्वीकृत विधि का उपयोग करें ।
- मामूली गति सुधार के लिए स्पष्ट रेगेक्स कैशिंग।
- अधिक शब्द विभाजकों को पहचाना और हाइफ़न के लिए सामान्यीकृत किया गया।
यहाँ कोड है:
public class UrlSlugger
{
static readonly Regex WordDelimiters = new Regex(@"[\s—–_]", RegexOptions.Compiled);
static readonly Regex InvalidChars = new Regex(@"[^a-z0-9\-]", RegexOptions.Compiled);
static readonly Regex MultipleHyphens = new Regex(@"-{2,}", RegexOptions.Compiled);
public static string ToUrlSlug(string value)
{
value = value.ToLowerInvariant();
value = RemoveDiacritics(value);
value = WordDelimiters.Replace(value, "-");
value = InvalidChars.Replace(value, "");
value = MultipleHyphens.Replace(value, "-");
return value.Trim('-');
}
private static string RemoveDiacritics(string stIn)
{
string stFormD = stIn.Normalize(NormalizationForm.FormD);
StringBuilder sb = new StringBuilder();
for (int ich = 0; ich < stFormD.Length; ich++)
{
UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(stFormD[ich]);
if (uc != UnicodeCategory.NonSpacingMark)
{
sb.Append(stFormD[ich]);
}
}
return (sb.ToString().Normalize(NormalizationForm.FormC));
}
}
यह अभी भी गैर-लैटिन चरित्र मुद्दे को हल नहीं करता है। एक पूरी तरह से वैकल्पिक समाधान स्ट्रिंग का अपने हेक्स प्रतिनिधित्व को परिवर्तित करने के लिए Uri.EscapeDataString का उपयोग करना होगा :
string original = "测试公司";
string converted = Uri.EscapeDataString(original);
फिर हाइपरलिंक उत्पन्न करने के लिए डेटा का उपयोग करें:
<a href="http://www.example.com/100/%E6%B5%8B%E8%AF%95%E5%85%AC%E5%8F%B8">
测试公司
</a>
कई ब्राउज़र पता बार में चीनी अक्षरों को प्रदर्शित करेंगे (नीचे देखें), लेकिन मेरे सीमित परीक्षण के आधार पर, यह पूरी तरह से समर्थित नहीं है।
नोट: इस तरह से काम करने के लिए Uri.EscapeDataString के लिए, iriParsing सक्षम होना चाहिए।
संपादित करें
सी # में URL स्लग उत्पन्न करने की चाह रखने वालों के लिए, मैं इस संबंधित प्रश्न की जाँच करने की सलाह देता हूँ:
स्टैक ओवरफ्लो अपने एसईओ के अनुकूल URL कैसे उत्पन्न करता है?
यह वही है जो मैंने अपने प्रोजेक्ट के लिए उपयोग किया है।