0

次のプレフィックスとサフィックスをすべて削除し、ドメインのルート ワードのみを返す C# ルーチンを作成しようとしています。

var stripChars = new List<string> { "http://", "https://", "www.", "ftp.", ".com",  ".net", ".org", ".info", ".co", ".me", ".mobi", ".us", ".biz" };

私は次のコードでこれを行います:

originalDomain = stripChars.Aggregate(originalDomain, (current, repl) => Regex.Replace(current, repl, @"", RegexOptions.IgnoreCase));

これは、ほとんどすべての場合に機能するようです。しかし、今日、「originalDomain」を「NameCheap.com」に設定しても返されないことがわかりました。

NameCheap

そうあるべきですが、むしろ:

NCheap

誰でもこれを見て、何がうまくいかないのか教えてもらえますか? どんな助けでも大歓迎です。

4

2 に答える 2

13

これは正常です。正規表現のドットは任意の文字を意味します。

したがって、 に.me一致ameNameCheapます。

バックスラッシュでドットをエスケープします。

また、この種の操作には専用の URI API を使用したほうがよいでしょう。

于 2013-05-28T14:26:25.770 に答える
3

これがあなたの質問に直接答えないことはわかっていますが、達成しようとしている特定のタスクを考えると、次のようなことを試すことをお勧めします。

Uri uri = new Uri(originalDomain);
originalDomain = uri.Host;

編集:

入力にスキームが含まれていない可能性がある場合は、この投稿で通知されているように uri ビルダーを使用できます

var hostName = new UriBuilder(input).Host

お役に立てれば。

于 2013-05-28T14:29:35.847 に答える