gpt4 book ai didi

c# - 如何在 C# 中生成友好 URL?

转载 作者:IT王子 更新时间:2023-10-29 04:13:41 26 4
gpt4 key购买 nike

如何在 C# 中生成友好 URL?目前我只是用下划线替换空格,但我将如何生成类似于 Stack Overflow 的 URL?

例如我如何转换:

How do I generate a Friendly URL in C#?

进入

how-do-i-generate-a-friendly-url-in-C

最佳答案

不过,Jeff 的解决方案中有几处可以改进。

if (String.IsNullOrEmpty(title)) return "";

恕我直言,不是测试这个的地方。如果函数传递了一个空字符串,无论如何都会出现严重错误。抛出错误或根本不使用react。

// 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,}", "-");

同样,基本上是两倍的工作:首先,使用正则表达式一次替换多个空格。然后,再次使用正则表达式一次替换多个破折号。两个要解析的表达式,两个要在内存中构造的自动机,对字符串进行两次迭代,创建两个字符串:所有这些操作都可以合并为一个。

在我的脑海中,没有任何测试,这将是一个等效的解决方案:

// 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;

请注意,此方法尽可能使用字符串函数而不是正则表达式函数,并使用字符函数而不是字符串函数。

关于c# - 如何在 C# 中生成友好 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37809/

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