1. 경로에서 파일명만 뽑아내기
요구 사항 >
"C:/mydocument/resume/나의이력서.hwp",
"D:/mymusic.mp3",
"C:/photo/내얼굴.jpg"
에서
"나의이력서.hwp",
"mymusic.mp3",
"내얼굴.jpg"
로 출력
(.lastIndexOf(), split() join() 등 사용하지 않음)
풀이 과정 >
- 일단 거꾸로 문자를 나열한다.
- / 까지 문자를 뽑는다.
- /을 제외해서 문자를 뽑는다.
- 다시 문자를 거꾸로 돌려서 출력한다.
코드 >
public static void main(String[] args) {
String[] pathFileNameArr = {"C:/mydocument/resume/나의이력서.hwp",
"D:/mymusic.mp3",
"C:/photo/내얼굴.jpg"};
System.out.println("\n === 파일명만 뽑아온 결과물 ===");
System.out.println("");
for(int i = 0; i<pathFileNameArr.length; i++) {
char[] chArr = pathFileNameArr[i].toCharArray();
String reverse = "";
for(int j = pathFileNameArr[i].length() - 1; j>=0; j--) {
reverse += chArr[j];
}
int idx = reverse.indexOf("/");
if(idx != -1) {
reverse = reverse.substring(0,idx);
chArr = reverse.toCharArray();
String result ="";
for(int j = chArr.length - 1; j>=0; j--) {
result += chArr[j];
}
System.out.println(result);
}
}
}
lastIndexOf()를 사용해서 풀어보기 >
String[] pathFileNameArr = {"C:/mydocument/resume/나의이력서.hwp",
"D:/mymusic.mp3",
"C:/photo/내얼굴.jpg"};
for(int i = 0; i< pathFileNameArr.length; i++) {
String result = "";
for (int j = 0; j< pathFileNameArr[i].length(); j++) {
int idx = pathFileNameArr[i].lastIndexOf("/");
result = pathFileNameArr[i].substring(idx+1);
}
System.out.println(result);
}
2. 문자열으로 받아온 숫자에서 특수문자를 빼고 더하기
요구 사항 >
"$2,0$$$00,0$$00"
"$500,000"
이 둘을 더한 뒤
2,500,000으로 반환한다.
풀이 과정 >
1. 문자열에서 특수문자의 앞까지만 읽어옴
2. 그 특수문자의 다음 인덱스부터 끝까지 읽어옴
3. 둘이 붙인다.
4. 특수문자가 완전히 없어질 때까지 반복한다(,도 마찬가지)
5. 둘을 더한다(int타입으로 변환)
6. 더한 뒤 다시 string타입으로 반환하여
, 의 규칙(3의 배수일 때 -1)을 계산하여 규칙대로 ,를 넣는다.
7. ,가 넣어진 만큼의 커진 배열에 넣고 출력한다.