我有这个常规将帖子标题转换为slug,我的问题是当我在我的帖子名称中包含像(:,|,?)这样的字符时,我收到了错误。我不知道如何让我的常规包括特殊字符..
这是我的代码:
public static string MakeUrlFriendly(this string value)
{
value = value.ToLowerInvariant();
value = Regex.Replace(value, @"[^a-z0-9\s-]", "");
// convert multiple spaces into one space
value = Regex.Replace(value, @"\s+", " ").Trim();
// cut and trim
value = value.Substring(0, value.Length <= 70 ? value.Length : 70).Trim();
value = Regex.Replace(value, @"\s", "-"); // hyphens
value = value.ToLowerInvariant().Replace(" ", "-");
value = Regex.Replace(value, @"[^0-9a-z-]", string.Empty);
return value;
}
我从这里叫它:
var Myurl = model.Book_name;
model.UrlSlug = Myurl.MakeUrlFriendly();
当我添加一个帖子名称时:&#34;普拉提核心功能剖析:安全图解指南&#34;
我收到了这个错误:
虽然它看起来应该是:功能解剖 - 普拉提 - 核心 - 示例 - 指导安全
答案 0 :(得分:0)
为什么不从字符串中删除所有无效字符,而不是慢慢迭代并更新正则表达式以提供正确的文件名?我们给出了无效字符,这些字符可以在多个平台上使用。
var myTitle = "Functional Anatomy of the Pilates Core: An Illustrated Guide to a Safe";
foreach (var invalidChar in Path.GetInvalidFileNameChars())
myTitle = myTitle.Replace(invalidChar.ToString(),string.Empty);
//Now you can trim spaces, etc
此外,在生成安全网址时,您应该使用内置的this