2009-07-10 9 views
0

変数urlに格納する絶対URL /testserver/tools/search.aspxがあるとします。次の文字列の一部を取得するにはどうすればよいですか?

/testserverを使わずにurl == /tools/search.aspxをチェックしたいと思います。

より完全な例は次のようになります。

私TESTSERVERは、URL http://www.testserver.com/tools/Search.aspxが含まれてい

が、私はにTESTSERVERのURLを格納する変数のURLを比較すると、私のライブサーバーは、URL http://www.liveserver.com/tools/Search.aspx

が含まれています私たちは/tools/Search.aspxの部分だけをチェックしたいのです。私が使用する

+0

正規表現:

は、ここでそれを行う方法の例ですか? – thebrokencube

+0

あなたのURLは '/ testserver/tools/search.aspx'か' http:// www.testserver.com/tools/Search.aspx'ですか? – dtb

+0

デバッグしてAbsoulteUrlが/testserver/tools/search.aspxであることを確認したとき – Xaisoft

答えて

2
if (url.ToLower().Contains("/tools/search.aspx")) 
{ 
    //do stuff here 
} 

クエリ文字列を持っている場合には含まれていますが、クエリ文字列を持っていない場合もEndsWith(「/ツール/ search.aspx」)を使用することができます。

+2

"EndsWith"が良い選択かもしれません。 –

+0

ちょうど好奇心が強い、EndsWithをより良い選択にするもの。 – Xaisoft

+1

@Andrew - 一致させたい場合を除いて.../search.aspx?name = something。 EndsWithは、クエリパラメータなしのURLがあると確信していれば良いでしょう。 – tvanfosson

0

プロパティAppRelativeCurrentExecutionFilePathを使用すると、アプリケーションのルートに相対的なパスが得られます。だから、"http://host/virtualfolder/page.aspx""~/page.aspx"次のようになります。

if (HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath.Equals("~/search.aspx", StringComparison.InvariantCultureIgnoreCase)) 
{ 
    // do something 
} 
3

ご入力フォーム"http://www.testserver.com/tools/Search.aspx"である場合:

var path1 = new Uri("http://www.testserver.com/tools/Search.aspx").AbsolutePath; 
var path2 = new Uri("http://www.liveserver.com/tools/Search.aspx").AbsolutePath; 

どちらの結果"/tools/Search.aspx"に。あなたは、クエリ文字列を持つもの、フラグメント識別子を含む、すなわち任意のURIを、受け入れなければならない場合Uriを使用して

は、あなたの入力フォーム「/ TESTSERVERである


場合など、最適なソリューションです。 COM /ツール/ Search.aspx」あなたは、すべての入力は、常にこの形式と有効のものであろうことを知っているし、他のURIコンポーネントが含まれていません:

var input = "/testserver.com/tools/Search.aspx"; 
var path1 = input.Substring(input.Index('/', 1)); 

結果が"/tools/Search.aspx"です。

+1

アップが投票された理由は、コアシステムライブラリによって提供されている試行錯誤した機能を使用することを示唆しているからです。なぜあなたは他の何かをしますか? – belugabob

+0

質問に記載されているように、アプリケーションがサーバー上の仮想フォルダに展開されている場合はどうなりますか? –

1
Regex.Match(url, @"^.*?/tools/search\.aspx\??.*", 
       RegexOptions.IgnoreCase).Success == true 

あなたはとにかくドメインを持っていませんRequest.PathInfoからURLをつかむ...しかし、あなたはあなたがパス/ TESTSERVER/1ではなく、URLの持って言うように、あいまいで疑問場合提供する。唯一の違いは、「(私は彼らの絶対パスを比較するSystem.Uriクラスを使用するURLのホスト部分であることを行っている場合は

はそうでない場合、Request.Url.ToString()

0

からURLを設定しますtools/Search.aspx "の部分)を作成します。多分、

static void Main(string[] args) 
{ 
    //load up the uris 
    Uri uri = new Uri("http://www.testserver.com/tools/search.aspx");    
    Uri matchingUri = new Uri("http://www.liveserver.com/tools/search.aspx"); 
    Uri nonMatchingUri = new Uri("http://www.liveserver.com/tools/cart.aspx"); 

    //demonstrate what happens when the uris match 
    if (uri.AbsolutePath == matchingUri.AbsolutePath) 
     Console.WriteLine("These match"); 
    //demonstrate what happens when the uris don't match 
    if (uri.AbsolutePath != nonMatchingUri.AbsolutePath) 
     Console.WriteLine("These do not match"); 
} 
関連する問題