쿼리 문자열 없이 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];
출력 예:
- null ---> 비어 있습니다.
- empty ---> empty
- http://domain/page.http ---> http://domain/page.http:/
- http://domain/page.domain?q=100 ---> http://domain/page.domain
- http://domain/page.domain?q=100#page=2 ---> http://domain/page.domain
http://domain/page.domain#page=2 ---> http://domain/page.domain
page.flash ---> page.flash
- page.syslog?q=100 ---> page.syslog
- page.disc?q=100#page=2 ---> page.disc
- page.http #http ---> page.htp
다음은 @Kolman의 답변을 사용한 확장 방법입니다.Get Left Part보다 Path()를 사용하는 것을 기억하는 것이 조금 더 쉽습니다.적어도 확장 속성을 C#에 추가할 때까지 경로의 이름을 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 이름만!!
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
'IT' 카테고리의 다른 글
두 데이터베이스 간의 외부 키 관계 추가 (0) | 2023.04.23 |
---|---|
Excel 시트 이름에 유효한 문자 (0) | 2023.04.23 |
자동 레이아웃 - UIButton의 고유 크기에는 제목 삽입이 포함되지 않습니다. (0) | 2023.04.18 |
그립을 통해서만 크기를 조정할 수 있는 테두리 없이 WPF 창을 만드는 방법은 무엇입니까? (0) | 2023.04.18 |
행 끝 유지 (0) | 2023.04.18 |