回答:
使用できます System.Uri
Uri url = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye");
string path = String.Format("{0}{1}{2}{3}", url.Scheme,
Uri.SchemeDelimiter, url.Authority, url.AbsolutePath);
またはあなたが使うことができます substring
string url = "http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye";
string path = url.Substring(0, url.IndexOf("?"));
編集:brillyfreshの提案をコメントに反映するように最初のソリューションを変更します。
substring
何のクエリ文字列がありません場合の方法は、エラーが発生します。string path = url.Substring(0, url.IndexOf("?") > 0? url.IndexOf("?") : url.Length);
代わりに使用してください。
これはより簡単な解決策です:
var uri = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye");
string path = uri.GetLeftPart(UriPartial.Path);
return Request.Url.GetLeftPart(UriPartial.Path);
uri.GetComponent(
Uriの一部を取得するためのもう1つの素晴らしい方法です。今までこの2つを知りませんでした!
Request.RawUrl.Split(new[] {'?'})[0];
RawUrl
を取得することに注意してください。 AbsoluteUri
Request.Url.AbsoluteUri.Split('?')[0]
良い答えもここにあります
Request.Url.GetLeftPart(UriPartial.Path)
私のやり方:
new UriBuilder(url) { Query = string.Empty }.ToString()
または
new UriBuilder(url) { Query = string.Empty }.Uri
Uri.GetLeftPart
です。NET Coreの最新バージョン(1.1)にはその方法が必要です(現時点ではネットコア1.1を使用していないので確認できません)
Split()バリエーション
参考のためにこのバリエーションを追加したいだけです。URLは文字列であることが多いため、Split()
メソッドを使用する方がよりも簡単ですUri.GetLeftPart()
。またSplit()
、Uriが例外をスローするのに対して、相対値、空の値、およびnull値を処理するようにすることもできます。さらに、URLには/report.pdf#page=10
(特定のページでPDFを開く)などのハッシュが含まれる場合もあります。
次のメソッドは、これらすべてのタイプのURLを扱います。
var path = (url ?? "").Split('?', '#')[0];
出力例:
page.html ---> page.html
@Kolmanの回答を使用した拡張メソッドを次に示します。GetLeftPartよりもPath()を使用するほうが覚えやすいでしょう。少なくともC#に拡張プロパティを追加するまで、Pathの名前をGetPathに変更することをお勧めします。
使用法:
Uri uri = new Uri("http://www.somewhere.com?param1=foo¶m2=bar");
string path = uri.Path();
クラス:
using System;
namespace YourProject.Extensions
{
public static class UriExtensions
{
public static string Path(this Uri uri)
{
if (uri == null)
{
throw new ArgumentNullException("uri");
}
return uri.GetLeftPart(UriPartial.Path);
}
}
}
Request.RawUrl.Split('?')[0]
URL名だけのために!!
他のいくつかの回答では、QueryString
最初に次のものがない場合にnull例外をスローしたため、簡単な拡張機能を作成しました。
public static string TrimQueryString(this string source)
{
if (string.IsNullOrEmpty(source))
return source;
var hasQueryString = source.IndexOf('?') != -1;
if (!hasQueryString)
return source;
var result = source.Substring(0, source.IndexOf('?'));
return result;
}
使用法:
var url = Request.Url?.AbsoluteUri.TrimQueryString()
var canonicallink = Request.Url.Scheme + "://" + Request.Url.Authority + Request.Url.AbsolutePath.ToString();
これを試して:
urlString=Request.RawUrl.ToString.Substring(0, Request.RawUrl.ToString.IndexOf("?"))
これから:http : //www.example.com/mypage.aspx ?myvalue1=hello&myvalue2=goodbyeこれを取得します:mypage.aspx