2012-06-19 3 views
2

사용자가 JFileChooser에 따옴표가있는 경로를 입력하고 따옴표없이이 경로를 가져올 수 있습니까?JFileChooser에서 따옴표가있는 경로를 가져 옵니까?

예를 들어 사용자는 파일 이름 텍스트 필드에 "c:\path\to\File"을 넣습니다. 하지만 내가 선택한 파일을 받았을 때 현재 디렉토리 + "c:\path\to\File"을 얻었습니다. 이 문제를 해결할 수있는 방법이 있습니까? 당신과 같이 뭔가를 할 수

+0

String.replaceAll 메서드를 사용하십시오. – adatapost

답변

1

감사 :

String str = "\"C:\\foor\\bar\""; 
System.out.println(str); 
String newStr = str.replaceAll("\"?(.+?)\"?", "$1"); 
System.out.println(newStr); 

인쇄 :

"C : \ foo는 \ 표시 줄"

C : \ foo는 \ 표시 줄

그러면 문자열의 처음과 끝에 정확한 따옴표 (")가 제거됩니다.

"C : \ foo는 \ 표시 줄"

"C : 정규 표현식의 ?는 예를 들어, 다음은 모두 같은 결과를 산출해야하므로 따옴표가 존재하지 않을 수도 있음을 나타냅니다 \ foo는 \ 표시 줄

C : \ foo는 \ 표시 줄 "

C : \ foo는 \ 표시 줄

하지만, 내 지식의 " 문자는 유효한 파일 경로의 일부가 아니므로 다음과 같이 수행하면됩니다. str.replaceAll("\"","");.

편집 : 귀하의 의견과 질문을보고 편집, 나는 당신이 무엇을하고있는 것 같습니다 코드 의이 짧은 부분을 만들었습니다. 즉, 다른 누군가가 유용하다고 생각한 경우를 대비하여 이전 답변을 삭제하지 않을 것입니다. "C:\foo\bar.txt"와 코드가 초기 세그먼트를 제외하고, C:\foo\bar.txt 인쇄 :

JFileChooser chooser = new JFileChooser(); 
chooser.setCurrentDirectory(new java.io.File(".")); 
chooser.setDialogTitle("Hello"); 
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); 
chooser.setAcceptAllFileFilterUsed(false); 
if (chooser.showOpenDialog(f) == JFileChooser.APPROVE_OPTION) 
{ 
    File file = chooser.getSelectedFile(); 
    if (file.getName().contains("\"")) 
    { 
     Pattern pattern = Pattern.compile("\"?(.*?)\"?"); 
     Matcher m = pattern.matcher(file.getName()); 
     if (m.matches()) 
     { 
      System.out.println("Group Found: " + m.group(1)); 
     } 
    } 
} 

이 당신이 파일의 텍스트 상자에 다음과 같은 후, 내가 붙여 넣은 무엇을 할 것으로 보인다.

+1

경로에 추가되는 현재 디렉토리는 어떻습니까? JFileChooser는 따옴표가있는 경로가 파일 이름이라고 가정하고 부모로 현재 디렉토리를 추가합니다. –

+0

@FerasOdeh : 대답을 변경했습니다. 필요한 작업을 수행해야합니다. – npinti

+0

'\ "로 어떻게 동작하는지 보지 못하겠습니까? (. *?) \"? "는 빈 문자열과 일치합니다. – dacwe

관련 문제