JUST GO

[Java] TEST6 본문

Java/TEST

[Java] TEST6

root_go 2022. 10. 20. 10:14

Q. 어떤 문자열을 전달하였을 때 공백을 기준으로 단어 구분이 된 카멜 케이스 명명을 해주는 메서드 (toCamel) 만드세요.

 

가령, 

toCamel("Hello World!"); 의 호출 결과는 "helloWorld!"여야 합니다.

toCamel("hello nice to meet you."); 의 호출 결과는 "helloNiceToMeetYou." 여야 합니다.

toCamel("MY NAME IS GAPSUKIM.") 의 호출 결과는 "myNameIsGapsukim." 여야 합니다.

 

기반 지식 :

- int와 char 간의 형 변환은 자유롭게 사용할 수 있는데, 가령, char인 'a'를 int로 변환하면 97이 나오고,

'A'는 65가 나옵니다. ( int aC = 'a'; // 97)

- 반대로, int를 char로 변환해도 마찬가지입니다.(char cA = 97; // 'a' )

- 이러한 문자 하나에 배정되어 있는 숫자를 ASCII(아스키) 코드라고 하며 구글에 아스키 코드 테이블을 검색하면 

많은 자료가 나옵니다.

 

  • 첫번째 시도
package rootgo.dev;

public class Camel {
    public static void main(String[] args) {
        String s = "Hello World!";
        System.out.println(toCamel(s));
        String s1 = "hello nice to meet you";
        System.out.println(toCamel(s1));
        String s2 = "MY NAME IS ROOTGO.";
        System.out.println(toCamel(s2));
    }
    public static String toCamel(String s){
        s = s.substring(0, 1).toLowerCase() + s.substring(1);
        // 문자열 s의 첫글자를 소문자로 바꿔준다. -> 이 부분을 바꿔줘야 함
        StringBuilder builder = new StringBuilder(s);
        // StringBuilder 클래스 사용해봤습니다.
        for(int i=0; i < builder.length(); i++){
            if (builder.charAt(i) == ' '){
                // 공백이 나올때마다
                builder.deleteCharAt(i);
                // 공백 제거
                builder.replace(
                        i, i + 1,
                        String.valueOf(
                                Character.toUpperCase(
                                        builder.charAt(i))));
                // 공백 다음문자를 대문자로 바꿔줍니다.
            }
        }
        return builder.toString();
        // 문자열 유형으로 반환해줍니다.
    }
}
// helloWorld!
// helloNiceToMeetYou
// mYNAMEISROOTGO. -> 오점이 있음
  • 두번째 시도
package rootgo.dev;

public class Camel {
    public static void main(String[] args) {
        String s = "Hello World!";
        System.out.println(toCamel(s));
        String s1 = "hello nice to meet you";
        System.out.println(toCamel(s1));
        String s2 = "MY NAME IS ROOTGO.";
        System.out.println(toCamel(s2));
    }
    public static String toCamel(String s){
        s = s.substring(0,s.length()).toLowerCase();
        // 문자열 s 전체를 소문자로 바꿔줍니다.
        StringBuilder builder = new StringBuilder(s);
        // StringBuilder 클래스 사용해봤습니다.
        for(int i=0; i < builder.length(); i++){
            if (builder.charAt(i) == ' '){
                // 공백이 나올때마다
                builder.deleteCharAt(i);
                // 공백을 제거해줍니다.
                builder.replace(
                        i, i + 1,
                        String.valueOf(
                                Character.toUpperCase(
                                        builder.charAt(i))));
                // 공백 다음문자를 대문자로 바꿔줍니다.
            }
        }
        return builder.toString();
        // 문자열 유형으로 반환해줍니다.
    }
}
// helloWorld!
// helloNiceToMeetYou.
// myNameIsGapuskim

// 아스키 코드로 바꿔주는 거 만들어보기
  • 아스키 코드 사용
package rootgo.dev;

public class Camel2 {
    public static void main(String[] args) {
        System.out.println(toCamel2("Hello Wolrd!"));
        System.out.println(toCamel2("hello nice to meet you"));
        System.out.println(toCamel2("MY NAME IS GAPSUKIM"));
    }
    public static String toCamel2(String s){
        s = s.toLowerCase();
        // 문자열 s를 전부 소문자로 변환해줍니다.
        String[] temps = s.split(" ");
        // 문자열 s를 공백을 기준으로 나눠서 temp에 담아줍니다.
        String returns = temps [0];
        // 문자열 s가 전체 소문자인 상태에서 공백으로 나눠진 문자열의 첫단어의 첫문자를 그대로 붙여줍니다.
        for (int i = 1; i < temps.length; i++) {
            char[] tmp = temps[i].toCharArray();
            // 호출 대상이 되는 문자열의 각 문자를 담은 문자 배열 char을 반환합니다.
            tmp[0] = (char) (tmp[0] - 32);
            // ASCII 소문자와 대문자는  소문자 - 대문자 = 32
            returns += new String(tmp);
        }
        return returns;
    }
}

'Java > TEST' 카테고리의 다른 글

[JDBC] TEST  (1) 2022.10.24
[Java] TEST7  (0) 2022.10.20
[Java] TEST5  (0) 2022.10.19
[Java] TEST4  (0) 2022.10.19
[Java] TEST3  (0) 2022.10.19