자기주도학습/코딩 테스트

문자열 첫 글자 대문자로 리턴하기 [letterCapitalize] // .split() .substring() .join()

min민 2023. 1. 19.

 

Q : 문자열을 입력받아 문자열을 구성하는 각 단어의 첫 글자가 대문자가 되도록 리턴하기.

 

 

주의사항

String으로 리턴 시키세요.

연속된 공백이 있을 수 있다.

단어는 공백으로 구분한다.

빈 문자로만 이루어진 문자열 입력 받으면 빈 문자열 리턴하기.

 

 

 

 

코드 작성해보기

public String letterCapitalize(String str) {
// 빈 문자열을 입력받은 경우 빈문자열 리턴.
// if(str.isEmpty()) return ""; 
   if(str.length() == 0 ) return "";

   String[] words = str.split(" ");  // split을 활용해서 공백을 기준으로 잘라 배열로 만들기.
   Stirng result = ""; // 출력할 결과값에는 "" 빈문자열을 저장하기.

     for(int i = 0; i < words.length; i++) {
      //만약 words의 i배열중 빈 배열이 있으면 그냥두기 * (주의사항에 연속된 공백이 있을 수 있다.) 는 가능성 제거.
      if(words[i].isEmpty()){
       words[i] = words[i];
      } 
      // 공백이 아니면 words[i]배열에 words[i]의 0번째 위치에 있는 문자를 추출해 대문자로 변경하고 
      // Stirng.valueOf를 통해서 string으로 바꿔주기
        else {
        words[i] = Stirng.valueOf(words[i].charAt(0).toUpperCase() +
        
      // words[i]뒤에는 그대로 substring을 활용해서 0번째가 대문자로 잘렸으니 1번째부터 그대로 출력하기.
      // 만약 뒤에문자가 소문자라는 확신이 없으면 .toLowerCase()를 활용하면 된다.
        words[i].substring(1);
      }
      
      // result변수에 .join() 메서드를 활용해서 공백을 띄워준후 words를 넣는다
      // .join()은 배열을 문자열로 합쳐줌.
      result = String.join(" ", words); 
      return result;
     }


}

 

 

결과값 : 

/*

Ex) "hello min"이 들어오면.

.split()으로 인해 배열로 잘리고, [hello, min]이 될것이고

for문에 들어가서 이중공백은 없기에 if문은 바로 탈출.

else문에서 Stirng.valueOf(words[i].charAt(0).toUpperCase()로 인해서 

hello의 h가 -> H가 되고,  (*h가 charAt의 0번째 요소임.) 

+ words[i].substring(1);

.substring(1) 으로 인해서 words[i]의 1번째 요소부터 마지막요소까지 뽑아온것을 더하게됨. ( '+' );

for문은 words.length만큼 돌기때문에 한번더 돌아서 같은방식으로

min -> Min이 될것이고.

String.join(" 공백을 두고 ", words를 합치세요); 이말이니

-> Hello Min 이 된다. 이 값을 result에 저장.

결과값 => Hello Min이 출력됨.

*/

 

 

 

 

 

이 문제를 해결하기 위해서 알아야 하는 필요지식

.split()

.substring()

.join()

String.valueOf()

 

 

댓글