사용자에게 확장명을 가진 파일 이름을 넣으라는 대화 상자가 있습니다. 예 : "MyJavaProject.java". 출력물로서 점 (또는 ".java"를 예로들 수 있습니다.) 뒤에 오는 것만 가져 오려고합니다. 어떻게해야합니까?문자열에서 특정 문자 만 검색하는 방법은 무엇입니까?
0
A
답변
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"과 같습니다.
그래서 어느 것을 사용하든 부분 문자열을 가져 오기 전에 사용자 입력의 유효성을 검사해야합니다.
yourString.split (".") [1]; – tom
시도한 것을 포함시켜야합니다. 이것은 대답하기가 쉽지만 (따라서 많은 답을 얻을 수 있습니다) 일반적으로 S.O. 당신이 이미 한 일을 보여주지 않으려는 눈살을 찌푸리게합니다. –