이 포스팅은 공부 내용 정리를 위해 한 번 더 복습하는 용도로 작성되었습니다.
문자를 대문자에서 소문자, 혹은 소문자에서 대문자로 바꾸는 법을 정리하고자 한다.
문자를 비교해야 할 대 소문자와 대문자 상관없이 비교하는 문제에서는
문자를 한가지 방식으로 통일할 필요가 있다.
1. 아스키 코드 활용
String upper = "AAAAA";
for(int i =0; i<upper.length(); i++){ //toUpperCase()를 사용하지 않은 풀이
if(upper.charAt(i)>='a' && upper.charAt(i)<='z'){
int a = (int)upper.charAt(i)-32; //소문자와 대문자의 아스키코드값 차이는 32
upper= upper.replace(upper.charAt(i),(char)a); //chara로 값 교체
}
}
String lower = "aaaaa";
for(int i =0; i<lower.length(); i++){ //toLowerCase()를 사용하지 않은 풀이
if(lower.charAt(i)>='A' &&lower.charAt(i)<='Z'){
int a = (int)lower.charAt(i)+32; //대문자와 소문자의 아스키코드 값 차이는 32
lower = lower.replace(lower.charAt(i),(char)a);
}
}
위와 같이 아스키 코드를 활용하여,
글자가 소문자인지 아닌지를 판별하여 소문자일 경우
int로 변환한 char 값을 -32 한 후 다시 char로 변환하여
replace로 문자열에 저장할 수 있다.
replace를 사용하지 않더라도 코드가 조금 길어질 뿐 각 문자를 바꿔주면 손쉽게 교체할 수 있다.
반대로 소문자를 대문자로 교체할 때엔 값을 +32 더하면 문제가 해결된다.

아스키 코드 표는 위와 같으며,
위 표를 보면 a는 97부터 시작하여 z는 122로
알파벳이 넘어갈수록 1씩 증가하는 것을 알 수 있다.
대문자도 마찬가지로 A는 65로 시작하여 Z는 90으로 끝난다.
기본적인 알파벳 아스키 코드를 외워두면 좋겠지만, 그러지 못하는 경우에는
System.out.print((int)'a');
위와 같이 코드값을 알고 싶은 문자를 int로 변환하여 출력해보면
숫자가 나오는 것을 확인할 수 있다.
2. 함수 활용
java에서는 위와 같은 방법을 사용하지 않더라도
간단하게 대문자와 소문자를 바꿀 수 있는 함수로
toUpperCase() 와 toLowerCase()가 있습니다.
String upper = "AAAAA";
System.out.println(Character.isUpperCase(upper.charAt(0))); //true
upper = upper.toLowerCase(); //"aaaaa"
String lower = "aaaaa";
System.out.println(Character.isLowerCase(lower.charAt(0))); //true
lower = lower.toUpperCase(); //"AAAAA"
위와 같이 사용하며, toLowerCase()는 문자를 모두 소문자로 만들어주며,
toUpperCase()는 문자를 모두 대문자로 만들어줍니다.
종종 같이 쓰이는 함수 중에는 isUpperCase()와 isLowerCase()가 있는데,
Character.isUpperCase(확인하고 싶은 char) 로 사용합니다.
아스키 코드 값을 넣어도 코드에 해당하는 char가 대문자인지 소문자인지 확인하여
값을 출력하게 되며, 한글이나 문자로 된 숫자 등은 들어갈 수 없습니다.
문자의 대소문자 여부를 확인하고 싶으면 한글자씩 확인해야 하며,
함수를 사용하지 않는 예로는 위 아스키 코드 활용법에서 나왔던 것과 같이
char<='z' && char>='a' 와 같이 표현하는 방법이 있습니다.
'java' 카테고리의 다른 글
| [Java] ArrayList (0) | 2023.11.28 |
|---|---|
| [Java] - indexOf() 와 lastIndexOf() (0) | 2023.11.24 |