2013-08-16 2 views

답변

14
string filename = System.IO.Path.GetFileName("/Images/She.jpg"); 
+0

그 파일을 삭제하는 방법을 알려줄 수 있습니까? –

+1

물론, [System.IO.File.Delete] (http://msdn.microsoft.com/en-US/library/system.io.file.delete.aspx) 메서드를 사용하여 제거 할 수 있습니다. – Zbigniew

+0

그러나 '경로'가 올바른지 확인하십시오. – Zbigniew

0

경로가 너무 복잡하지 않으면 작동합니다. 파일 이름 뒤에 쿼리 매개 변수.

Path.GetFileName("/Images/She.jpg") 
3

경로로 작업하는 경우 다른 답변을 사용해야합니다. 단순한 문자열 일 경우 다음 코드를 사용할 수 있습니다.

+0

이것은 도움이됩니다. –

+0

일반 문자열로 작업하는 경우에도 'Path' 클래스를 사용해야합니다. 주어진 파일이''She.jpg ''와 같이 현재 디렉토리에 상대적이라면 어떻게됩니까? – dlras2

0

나는 이전에 게시 한 GetFileName 답변을 좋아합니다.

또는 IndexOf 및 하위 문자열을 사용하여 수동으로 문자열을 구문 분석 할 수 있습니다. 문자열을 파싱하는 단계를 쉽게 볼 수 있도록 여러 변수가 포함되었습니다.

var source = "/images/she.jpg"; 
var key = "/images/"; 
var target = source.IndexOf(key); 
var start = target + key.Length; 
var length = source.Length - start; 
var result = source.Substring(start, length); 
-1

음, 문자열 끝에서 뒤로 이동할 수 있습니다.

private string GetFileName(string path) 
    { 
     string filename = null; 

     for (int i = (path.Length - 1); i > -1; --i) 
     { 
      if (path[i].ToString() == "/") 
      { 
       for (int x = (i + 1); x < (path.Length); ++x) 
       { 
        filename += path[x]; 
       } 

       break; 
      } 
     } 

     return (filename); 
    } 

문자열의 마지막 문자부터 '/'에 도달 할 때까지 거꾸로 작동합니다. 그런 다음 '/'다음에 나오는 모든 문자를 더하고이를 반환합니다. , 당신은 또한 문자열을 배열로 분할하고 배열의 마지막 요소를 얻을 수있는 그냥 재미를 위해

+1

얼마나 복잡한 접근법. – CesarGon

0

...

string path = "/Images/She.jpg"; 
string[] arr = path.Split('/'); 
string filename = arr[arr.Length - 1]; 

하거나

string path = "/Images/She.jpg"; 
string filename = path.Split('/').Last(); 

이 한 라이너를 선호하는 경우 돌아갑니다

She.jpg