2012-05-11 9 views
2
가 다음과 같은 문제에 대한 좋은 해결책이 있다면 궁금

입니다 접두사 "temp_". string.replaceFirst()를 사용하여 접두어를자를 수 있습니다.제거 파일 접두사는 디렉토리 부분

하지만 내가 불행하다면 "temp_"도 해당 문자열의 디렉토리의 일부입니다. 마지막 출연 만 다듬어 지도록하려면 어떻게해야하나요?

나는 그것을 혼자서 분석 할 수 있다고 생각하지만, 더 좋은 방법으로 남겨 두는 마법이 있는지 궁금해하고 있었습니까?

C:\Dump\sol1\temp_results\temp_2012-04-core.pcap 

이 될해야 :

C:\Dump\sol1\temp_results\2012-04-core.pcap 

답변

2

만약 당신이 가지고있는 파일 ID defo @ goldolds '접근 방식입니다. 그러나 어떤 이유로 든 단순히 문자열로 사용한다면, 내 머리 속으로 튀어 나온 첫 번째 것은 다음과 같습니다.

String target = "temp_"; 

    String fullPath = "C:/Dump/sol1/temp_results/temp_2012-04-core.pcap"; 

    StringBuffer sb = new StringBuffer(fullPath); 
    int end = fullPath.lastIndexOf(target) + target.length(); 

    System.out.println(sb.replace(fullPath.lastIndexOf(target), end, "")); 
+0

@goldilocks 솔루션을 권장합니다. – Stefan

+0

@ goldilocks 해결책은 당신이해야하는 방법입니다. 내 것은 단지 내 머리 속의 첫 번째 팝이었습니다. – buymypies

+0

비록 내가 파일 객체에 접근 할 수 없다는 가정하에 goldilocks가 참이라하더라도 이것은 생각하지 못했고 대답으로 받아 들일 수있는 아주 좋은 방법이 될 것입니다. 여하튼 파일 객체에 액세스 할 수 있다면 goldilocks도 작동합니다. – Stefan

3

당신이 Path.getFileName()를 사용하는 경우, 파일의 기본 이름 즉, 그것은 어떤을 포함하지 않는다 (반환

은 예로서 더 정확하게 될하려면 상위 디렉토리). 다른 경로 함수 ( getName(), subpath() 등 참조)를 사용하여 다른 경로 또는 단일 문자열로 대체하여 다시 넣을 수 있습니다.

0

이것은 단지 다른 예입니다.

전체 문자열을 세 부분으로 나눕니다. cancat 1 + 3

1.substring till temp_ last occurence 

2.last occuerence of temp_ 

3.substring after last occuerence of temp_ 

어쨌든 난 그냥 더 정확하게, 그것은 비트 내가 한 말 명확 희망 만들기 위해 예를 준