2009-05-01 58 views
0

我从这个问题,下面的代码:What is the best way to clean a string for placement in a URL, like the question name on SO?如何将此PHP脚本转换为C#?

$str = strtolower( 
    preg_replace(array('/[^a-z0-9\- ]/i', '/[ \-]+/'), array('', '-'), 
    $urlPart)); 

该代码在短短一行对我的作品用PHP,它使清洁和SEO'd URL的,但我想使用相同的脚本在我ASP.NET(C#)应用程序。但不知道C#中这行代码是什么。任何人都可以将此PHP代码转换为C#函数。

感谢

回答

1

为了保持它的简单,它可能是最简单的两个正则表达式来做到这一点取代电话,虽然你可以使用Replace超载与MatchEvaluator把它改写成一个(这将是一个有点哈克)。

using System.Text.RegularExpressions; 

// ... 

var str = Regex.Replace(Regex.Replace(urlPart, @"[^a-z0-9\- ]/i", ""), @"[ \-]+", "-").ToLower(); 

希望有帮助。

+0

这不是更换特殊字符,简而言之它不会使URL SEO'd(短划线分隔):( – Prashant 2009-05-01 16:42:54

+0

@Prashant:你可以更具体地说明它是如何工作的吗?它直接从PHP转换而来,所以除非有区别在正则表达式的功能,我没有看到问题。(但我承认它没有测试。) – Noldorin 2009-05-01 16:48:29

0

我可能失去了一些东西,由于睡眠不足..但不能只是单纯做:

var myUrl = HttpUtility.UrlEncode(UrlToEncode); 

要做到仪表编码...

var myUrl = HttpUtility.EncodeUrl(UrlToEncode.Replace(" ", "-"));