[JAVA] String 클래스의 메소드 학습 : 파일 경로에서 파일명만 뽑아내기

심심이·2024년 1월 29일
0

java

목록 보기
27/46

1. 경로에서 파일명만 뽑아내기

요구 사항 >

"C:/mydocument/resume/나의이력서.hwp",
"D:/mymusic.mp3",
"C:/photo/내얼굴.jpg"

에서 
"나의이력서.hwp",
"mymusic.mp3",
"내얼굴.jpg"

로 출력 
(.lastIndexOf(), split() join() 등 사용하지 않음) 

풀이 과정 >

  1. 일단 거꾸로 문자를 나열한다.
  2. / 까지 문자를 뽑는다.
  3. /을 제외해서 문자를 뽑는다.
  4. 다시 문자를 거꾸로 돌려서 출력한다.

코드 >


public static void main(String[] args) {
		// ==== [퀴즈] ==== //
	     
	      
	      String[] pathFileNameArr = {"C:/mydocument/resume/나의이력서.hwp",
	                                "D:/mymusic.mp3",
	                                "C:/photo/내얼굴.jpg"};

	      /*
	       * 출력 결과
	        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++) {
			  //일단 pathFileNameArr[0]의 문자열을 chArr에 담아서 배열로 만든다.
			  char[] chArr = pathFileNameArr[i].toCharArray();
			  //그리고 나서 이 배열을 꺼꾸로 해서 reverse에 집어넣는다. 
			  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);
				  //reverse에서 0부터 idx(/)까지 출력한 값을 다시 reverse에 담음
				  // pwh.서력이의나 로 잘린 상태
                  /* 상태 : 
		    	  pwh.서력이의나 / 글자 하나하나 배열인 상태임.
				  3pm.cisumym
				  gpj.굴얼내/otohp
		    	  */

				  chArr = reverse.toCharArray();
				// [p,w,h,.,서,력,이,의,나] 로 char 배열로 출력해서 chArr에 담음

				  String result =""; //결과값 담을 변수
				  for(int j = chArr.length - 1; j>=0; j--) {
					  result += chArr[j];
				  } //다시 꺼꾸로 담아준다. chArr의 길이 -1 (배열인덱스때문에)
				  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); // /나의이력서.hwp 까지 출력되서 +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. ,가 넣어진 만큼의 커진 배열에 넣고 출력한다.
profile
개발하는 심심이

0개의 댓글

관련 채용 정보