URI 문자열이 유효한지 확인하는 방법
URI 문자열이 유효한지 (Uri 생성자에 공급할 수 있는지) 어떻게 확인합니까?
지금까지 나는 다음과 같은 내용 만 가지고 있지만 명백한 이유로 덜 무자비한 방법을 선호합니다.
Boolean IsValidUri(String uri)
{
try
{
new Uri(uri);
return true;
}
catch
{
return false;
}
}
Uri.IsWellFormedUriString을 시도했지만 생성자에서 던질 수있는 모든 것을 좋아하지 않는 것 같습니다. 예를 들면 :
String test = @"C:\File.txt";
Console.WriteLine("Uri.IsWellFormedUriString says: {0}", Uri.IsWellFormedUriString(test, UriKind.RelativeOrAbsolute));
Console.WriteLine("IsValidUri says: {0}", IsValidUri(test));
출력은 다음과 같습니다.
Uri.IsWellFormedUriString says: False
IsValidUri says: True
업데이트 / 답변
Uri 생성자는 기본적으로 Absolute 종류를 사용합니다. 이로 인해 Uri.TryCreate 및 생성자를 사용하려고 할 때 불일치가 발생했습니다. 생성자와 TryCreate 모두에 대해 UriKind를 일치 시키면 예상되는 결과를 얻을 수 있습니다.
올바른 형식의 URI는 특정 RFC 준수를 의미합니다. 예제의 로컬 경로가 이것과 일치하지 않습니다. IsWellFormedUriString
문서 에서 더 많은 것을 읽으십시오 .
해당 메서드의 잘못된 결과는 Uri
클래스가 입력을 구문 분석 할 수 없음을 의미하지 않습니다 . URI 입력이 RFC를 준수하지 않을 수 있지만 여전히 유효한 URI 일 수 있습니다.
업데이트 : 그리고 귀하의 질문에 대답하기 위해-Uri 문서에서 알 수 있듯이 TryCreate
정확히 원하는 것을 시도하고 true 또는 false를 반환 하는 정적 메서드 가 있습니다 ( Uri
true 인 경우 실제 인스턴스).
허용되는 답변은 명시적인 예를 제공하지 않으므로 다음은 C #에서 URI의 유효성을 검사하는 코드입니다.
Uri outUri;
if (Uri.TryCreate("ThisIsAnInvalidAbsoluteURI", UriKind.Absolute, out outUri)
&& (outUri.Scheme == Uri.UriSchemeHttp || outUri.Scheme == Uri.UriSchemeHttps))
{
//Do something with your validated Absolute URI...
}
절대 URI 및 HTTP 요청 만 지원한다고 가정하면 원하는 작업을 수행하는 함수가 있습니다.
public static bool IsValidURI(string uri)
{
if (!Uri.IsWellFormedUriString(uri, UriKind.Absolute))
return false;
Uri tmp;
if (!Uri.TryCreate(uri, UriKind.Absolute, out tmp))
return false;
return tmp.Scheme == Uri.UriSchemeHttp || tmp.Scheme == Uri.UriSchemeHttps;
}
귀하의 경우 uri 인수는 파일 위치를 참조하는 절대 경로이므로 메서드의 문서에 따라 false를 반환합니다. 이것을 참조하십시오
참고URL : https://stackoverflow.com/questions/4835269/how-to-check-that-a-uri-string-is-valid
'Program Tip' 카테고리의 다른 글
VBA 사전을 반복 하시겠습니까? (0) | 2020.12.04 |
---|---|
Bash에서 연산자 "="와 "=="의 차이점은 무엇입니까? (0) | 2020.12.04 |
한 클래스가 두 클래스를 확장 할 수 있습니까? (0) | 2020.12.04 |
Twitter 부트 스트랩 탭 및 자바 스크립트 이벤트 (0) | 2020.12.04 |
JavaScript에서 입력 텍스트 값을 얻는 방법 (0) | 2020.12.04 |