IT

쿼리 문자열 없이 URL 가져오기

itgroup 2023. 4. 23. 10:15
반응형

쿼리 문자열 없이 URL 가져오기

다음과 같은 URL이 있습니다.

http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye

갖고싶다http://www.example.com/mypage.aspx그것으로부터.

어떻게 하면 구할 수 있을까요?

보다 심플한 솔루션은 다음과 같습니다.

var uri = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye");
string path = uri.GetLeftPart(UriPartial.Path);

여기서 빌렸다: 쿼리 문자열 잘라내기 Clean URL C# 반환 ASP.net

사용할 수 있습니다.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("?"));

편집: 첫 번째 솔루션을 수정하여 brillfresh의 제안을 코멘트에 반영합니다.

제 솔루션은 다음과 같습니다.

Request.Url.AbsoluteUri.Replace(Request.Url.Query, String.Empty);
Request.RawUrl.Split(new[] {'?'})[0];

좋은 답변은 여기서도 찾을 수 있습니다.

Request.Url.GetLeftPart(UriPartial.Path)

마이웨이:

new UriBuilder(url) { Query = string.Empty }.ToString()

또는

new UriBuilder(url) { Query = string.Empty }.Uri

사용할 수 있습니다.Request.Url.AbsolutePath페이지명을 취득합니다.Request.Url.Authority호스트명과 포토에 사용합니다.원하는 것을 얻을 수 있는 토대가 있다고는 생각하지 않지만, 직접 조합할 수 있습니다.

System.Uri.GetComponents필요한 컴포넌트만 지정해 주세요.

Uri uri = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye");
uri.GetComponents(UriComponents.SchemeAndServer | UriComponents.Path, UriFormat.UriEscaped);

출력:

http://www.example.com/mypage.aspx

Split() 바리에이션

참고용으로 이 변형을 추가하고 싶습니다.URL은 대부분의 경우 문자열이므로,Split()보다 더 많은 방법Uri.GetLeftPart().그리고.Split()또한 상대값, 빈값 및 늘값을 사용할 수도 있지만 URI는 예외를 발생시킵니다.또한 URL에는 다음과 같은 해시가 포함될 수 있습니다./report.pdf#page=10(특정 페이지에서 pdf가 열립니다).

다음 방법에서는 이러한 모든 유형의 URL을 처리합니다.

   var path = (url ?? "").Split('?', '#')[0];

출력 예:

다음은 @Kolman의 답변을 사용한 확장 방법입니다.Get Left Part보다 Path()를 사용하는 것을 기억하는 것이 조금 더 쉽습니다.적어도 확장 속성을 C#에 추가할 때까지 경로의 이름을 GetPath로 변경할 수 있습니다.

사용방법:

Uri uri = new Uri("http://www.somewhere.com?param1=foo&param2=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 이름만!!

    string url = "http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye";
    string path = url.split('?')[0];

Silverlight용 솔루션:

string path = HtmlPage.Document.DocumentUri.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped);

간단한 확장을 작성했습니다. 다른 답변 중 몇 개는 null 예외를 발생시켰습니다.QueryString우선:

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() 

.net core get url (쿼리 문자열 없음)

var url = Request.GetDisplayUrl().Replace(Request.QueryString.Value.ToString(), "");

간단한 예는 다음과 같은 서브스트링을 사용하는 것입니다.

string your_url = "http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye";
string path_you_want = your_url .Substring(0, your_url .IndexOf("?"));
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

this.Request.RawUrl.Substring(0, this.Request.RawUrl.IndexOf('?'))

언급URL : https://stackoverflow.com/questions/4630249/get-url-without-querystring

반응형