只是想知道你是否对这个问题有任何想法。我想说明这是一个编码DEMO。所以这段代码永远不会成为生产代码。
我想写一个转换任何这些网址的类,
到此,
所以它应该忽略开始时的内容并整合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.");
有什么想法?我怎么能解决这个问题呢?是否有正则表达式有帮助?或者你会像我上面那样解决它吗?
顺便说一下这个代码是用于演示的,所以不要问我为什么要这个类。
答案 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类可能还有一些有趣的东西可以用于此。