2013-09-04 2 views
0

사용자에게 확장명을 가진 파일 이름을 넣으라는 대화 상자가 있습니다. 예 : "MyJavaProject.java". 출력물로서 점 (또는 ".java"를 예로들 수 있습니다.) 뒤에 오는 것만 가져 오려고합니다. 어떻게해야합니까?문자열에서 특정 문자 만 검색하는 방법은 무엇입니까?

+1

yourString.split (".") [1]; – tom

+0

시도한 것을 포함시켜야합니다. 이것은 대답하기가 쉽지만 (따라서 많은 답을 얻을 수 있습니다) 일반적으로 S.O. 당신이 이미 한 일을 보여주지 않으려는 눈살을 찌푸리게합니다. –

답변

0
final String fileExtension = ...; 
final String afterPeriod = fileExtension.substring(fileExtension.lastIndexOf(".")+1); 
0

여기서 중요한 점은 당신이 문자열 (".") .split를 호출 할 때, 당신은에 결과를 저장하는 것입니다

String filename="m.txt"; 
String ext=filename.split(".")[1]; 
1
String input = JOptionPane.shoeMessageDialog(null,"Enter the file name"); 
    String[] dev = input.split("."); 

    // this is to make sure you get the last string extension , if you have multiple dots just in case 
    String extension = dev[dev.length-1]; 
0

.split() 기능을 사용할 수 있습니다 제공된 문자열을 구분 기호로 사용하는 배열.

그러므로 결과 배열은 배열이 0부터 인덱싱되므로 [Java]를 검색 할 첫 요소 [1]에 액세스하므로 [MyJavaProject, Java] 이됩니다.

0

lastIndexOf() 및 split() 모두 괜찮은 답변이지만 사용자가 잘못된 입력을 입력하면이 질문에 대한 다른 답변의 일부가 제대로 작동하지 않습니다.

예를 들어 사용자가 "some.bad.input.java"를 입력하면 split()가 올바르게 작동하지 않습니다. 여기서 "some.bad.input.java"는 원하는 "java"대신 "bad"하위 문자열을 제공합니다. . split()을 사용하면 요소 1을 가정하지 않고 마지막 배열 요소를 가져와야합니다.

사용자가 '.'기호없이 문자열을 입력하면 lastIndexOf()를 사용하면 올바르게 작동하지 않습니다. lastIndexOf()가 -1을 반환하고 substring (lastIndexOf() + 1)이 사용자에게 입력 된 전체 문자열을 제공하는 "somebadinput"과 같습니다.

그래서 어느 것을 사용하든 부분 문자열을 가져 오기 전에 사용자 입력의 유효성을 검사해야합니다.