转换URL的方法 - 正则表达式是否合适

时间:2009-10-20 21:19:11

标签: c# regex

只是想知道你是否对这个问题有任何想法。我想说明这是一个编码DEMO。所以这段代码永远不会成为生产代码。

我想写一个转换任何这些网址的类,

  1. www.google.co.nz
  2. WWW.google.co.nz
  3. google.co.nz
  4. http://google.co.nz
  5. 到此,

    http://www.google.co.nz

    所以它应该忽略开始时的内容并整合http://www

    你怎么建议我这样做?我有一些逻辑,说这样的东西,

    if (address.ToLower().Contains("http://"))
    {
        address = address.ToLower().Replace("http://", "");
    }
    if (address.ToLower().Contains("www."))
    {
        address = address.ToLower().Replace("www.", "");
    }
    address.Append("http://www.");
    

    有什么想法?我怎么能解决这个问题呢?是否有正则表达式有帮助?或者你会像我上面那样解决它吗?

    顺便说一下这个代码是用于演示的,所以不要问我为什么要这个类。

1 个答案:

答案 0 :(得分:1)

您现在拥有的代码无法正确处理https://并破坏具有www的网址。在他们中间(不太可能,但可能)。我会这样做:

string prefix = url.ToLower().StartsWith("https://") ? "https://www." : "http://www.";
url = Regex.Replace(url, @"^((https?://)?(www\.)?)", prefix, RegexOptions.IgnoreCase);

当然可以在单个正则表达式操作中完成所有操作,但可读性可能会受到影响。当然你应该通常检查string.IsNullOrEmpty等。

System.Uri类可能还有一些有趣的东西可以用于此。