JUST GO
[Java] TEST6 본문
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 |