gpt4 book ai didi

asp.net - 创建友好 URL 时如何删除无效字符(即如何创建 slug)?

转载 作者:行者123 更新时间:2023-12-03 03:06:41 25 4
gpt4 key购买 nike

假设我有这个网页:
http://ww.xyz.com/Product.aspx?CategoryId=1

如果 CategoryId=1 的名称是“Dogs”,我想将 URL 转换为如下所示:
http://ww.xyz.com/Products/Dogs

问题在于类别名称是否包含外来字符(或对于 URL 无效)。如果 CategoryId=2 的名称是“Göra äldre”,那么新的 url 应该是什么?

逻辑上应该是:
http://ww.xyz.com/Products/Göra阿尔德雷
但这是行不通的。首先是因为空格(例如我可以轻松地用破折号替换),但是外来字符呢?在 Asp.net 中,我可以使用 URLEncode 函数,它会给出如下所示的内容:
http://ww.xyz.com/Products/G%c3%b6ra+%c3%a4ldre
但我真的不能说它比原始网址( http://ww.xyz.com/Product.aspx?CategoryId=2 )更好

理想情况下,我想生成这个,但我怎样才能自动执行此操作(即将外来字符转换为“安全”网址字符):
http://ww.xyz.com/Products/Gora-aldre

最佳答案

我想出了以下 2 种扩展方法(asp.net/C#):

     public static string RemoveAccent(this string txt)
{
byte[] bytes = System.Text.Encoding.GetEncoding("Cyrillic").GetBytes(txt);
return System.Text.Encoding.ASCII.GetString(bytes);
}

public static string Slugify(this string phrase)
{
string str = phrase.RemoveAccent().ToLower();
str = System.Text.RegularExpressions.Regex.Replace(str, @"[^a-z0-9\s-]", ""); // Remove all non valid chars
str = System.Text.RegularExpressions.Regex.Replace(str, @"\s+", " ").Trim(); // convert multiple spaces into one space
str = System.Text.RegularExpressions.Regex.Replace(str, @"\s", "-"); // //Replace spaces by dashes
return str;
}

关于asp.net - 创建友好 URL 时如何删除无效字符(即如何创建 slug)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3275242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com