2009-07-06 4 views
8

마지막 점 대신에 문자열을 두 개로 분리하는 가장 좋은 방법은 무엇이며 관용적일까요? 기본적으로 파일 경로 또는 URL의 나머지 경로에서 확장자를 분리합니다. 지금까지 내가하고있는 일은 스플릿 (".")과 마지막으로 마지막 부분 인 모든 것의 String.Join (".")입니다. 파리를 죽이기 위해 바주카포를 사용하는 것 같은데.C에서 마지막 점에서 문자열을 끊는 가장 좋은 방법 #

답변

22

이 같은 성능, 뭔가하려면 다음

string s = "a.b.c.d"; 
    int i = s.LastIndexOf('.'); 
    string lhs = i < 0 ? s : s.Substring(0,i), 
     rhs = i < 0 ? "" : s.Substring(i+1); 
5

당신은 Path.GetFilenameWithoutExtension()를 사용할 수

또는 당신을 위해 작동하지 않을 경우 : LastIndexOf 어쩌면 여기에 일부 사용

int idx = filename.LastIndexOf('.'); 

if (idx >= 0) 
    filename = filename.Substring(0,idx); 
+0

URL 조각에서 작동합니까 (\\ 대신 /를 사용)? 그리고 "폴더"도 반환할까요? Path.GetFilename()은 AFAIK 디렉토리가없는 파일의 이름 만 반환합니다. – Pablo

+0

OP가 파일 경로 만 묻는 경우 +1이됩니다. 그러나 System.IO.Path 문서에는 URL에 대한 지원이 언급되어 있지 않습니다. – OregonGhost

+0

정확하지만 파일 이름에 경로가 포함되어 있지 않은 경우 효과가있을 수 있습니다. –

1

문자열 방법.

그러나 Path 또는 FileInfo 연산자는 파일 이름 기반 작업에 더 적합합니다.

0

나는 당신이 정말 찾고있는 것은 Path.GetFileNameWithoutExtension Method (System.IO)하지만, 생각 단지 그것의 지옥에 대한 :

string input = "foo.bar.foobar"; 
int lastDotPosition = input.LastIndexOf('.'); 

if (lastDotPosition == -1) 
{ 
    Console.WriteLine("No dot found"); 
} 
else if (lastDotPosition == input.Length - 1) 
{ 
    Console.WriteLine("Last dot found at the very end"); 

} 
else 
{ 
    string firstPart = input.Substring(0, lastDotPosition); 
    string lastPart = input.Substring(lastDotPosition + 1); 

    Console.WriteLine(firstPart); 
    Console.WriteLine(lastPart); 
} 
2

는 확장자가없는 경로를 얻을

System.IO.Path.GetFileNameWithoutExtension(fileName) 

를 사용하여 얻을하려면 (점 포함) 확장 파일, 사용

Path.GetExtension(fileName) 

편집 :

불행하게도 GetFileNameWithoutExtension는 선행 경로를 제거합니다, 그래서 대신 당신은 사용할 수 있습니다

if (path == null) 
{ 
    return null; 
} 
int length = path.LastIndexOf('.'); 
if (length == -1) 
{ 
    return path; 
} 
return path.Substring(0, length); 
+0

URL과도 작동합니다. – jmservera

1

무엇 문자가 마지막으로 발견 위치를 반환 lastIndexOf에서도 방법을 사용하는 방법에 대한. 그런 다음 하위 문자열을 사용하여 원하는 것을 추출 할 수 있습니다.

1

String.LastIndexOf는 문자열에 문자가있는 경우 점의 위치를 ​​반환합니다. 그런 다음 String.Substring 메서드를 사용하여 문자열을 분할 할 수 있습니다.

1

당신은 작업을 acomplish하는 문자열의 방법

lastIndexOf에서도 및 문자열 사용할 수 있습니다.

관련 문제