■ Uri 클래스의 TryCreate 정적 메소드를 사용해 URL에서 파일명을 구하는 방법을 보여준다.
▶ Uri 클래스 : TryCreate 정적 메소드를 사용해 URL에서 파일명 구하기 예제 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Console.WriteLine(GetFileName("")); // "index.html" Console.WriteLine(GetFileName("test")); // "test.html" Console.WriteLine(GetFileName("test.xml")); // "test.xml" Console.WriteLine(GetFileName("/test.xml")); // "test.xml" Console.WriteLine(GetFileName("/test.xml?q=1")); // "test.xml" Console.WriteLine(GetFileName("/test.xml?q=1&x=3")); // "test.xml" Console.WriteLine(GetFileName("test.xml?q=1&x=3")); // "test.xml" Console.WriteLine(GetFileName("http://www.a.com/test.xml?q=1&x=3")); // "test.xml" Console.WriteLine(GetFileName("http://www.a.com/test.xml?q=1&x=3#aidjsf")); // "test.xml" Console.WriteLine(GetFileName("http://www.a.com/a/b/c/d")); // "d.html" Console.WriteLine(GetFileName("http://www.a.com/a/b/c/d/e/")); // "index.html" |
▶ Uri 클래스 : TryCreate 정적 메소드를 사용해 URL에서 파일명 구하기 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
#region 파일명 구하기 - GetFileName(url) /// <summary> /// 파일명 구하기 /// </summary> /// <param name="url">URL</param> /// <returns>파일명</returns> public string GetFileName(string url) { string fileName = string.Empty; if(Uri.TryCreate(url, UriKind.Absolute, out Uri uri)) { fileName = GetValidFileName(Path.GetFileName(uri.AbsolutePath)); } string fileExtension; if(!string.IsNullOrEmpty(fileName)) { fileExtension = Path.GetExtension(fileName); if(string.IsNullOrEmpty(fileExtension)) { fileExtension = ".html"; } else { fileExtension = string.Empty; } return GetValidFileName($"{fileName}{fileExtension}"); } fileName = Path.GetFileName(url); if(string.IsNullOrEmpty(fileName)) { fileName = "index"; } fileExtension = Path.GetExtension(fileName); if(string.IsNullOrEmpty(fileExtension)) { fileExtension = ".html"; } else { fileExtension = string.Empty; } fileName = fileName + fileExtension; if(!fileName.StartsWith("?")) { fileName = fileName.Split('?').FirstOrDefault(); } fileName = fileName.Split('&').LastOrDefault().Split('=').LastOrDefault(); return GetValidFileName(fileName); } #endregion #region 유효한 파일명 구하기 - GetValidFileName(fileName) /// <summary> /// 유효한 파일명 구하기 /// </summary> /// <param name="fileName">파일명</param> /// <returns>유효한 파일명</returns> private string GetValidFileName(string fileName) { foreach(char character in Path.GetInvalidFileNameChars()) { fileName = fileName.Replace(character.ToString(), string.Empty); } return fileName; } #endregion |