대문자로 통일
모든 문자를 대문자로 통일하는 문제입니다.
문자열 index에 해당하는 unicode 값을 리턴받을 수 있는 charCodeAt()을 사용한 뒤, 만약 대문자(65~90)사이의 문자가 아니면 대문자로 변경해줍니다.
소문자들은 97~122 사이의 unicode값을 갖습니다. 소문자인 경우 32씩을 빼주고 fromCharCode() 메소드를 사용해주면 대문자가 반환됩니다.
fromCharCode()는 String의 정적메서드로 UTF-16 코드 유닛의 시퀀스로부터 문자열을 생성해 반환합니다.
(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode)
String.fromCharCode(65, 66, 67); // returns "ABC"
String.fromCharCode(0x2014); // returns "—"
String.fromCharCode(0x12014); // also returns "—"; the digit 1 is truncated and ignored
String.fromCharCode(8212); // also returns "—"; 8212 is the decimal form of 0x2014
function allCapital(str) {
let answer = "";
for (let x of str) {
let num = x.charCodeAt();
if (num >= 65 && num <= 90) answer += x;
else answer += String.fromCharCode(num - 32);
}
return answer;
}
let str = "ItisTimeToStudyyyyyyyyyy";
console.log(allCapital(str));
toLowerCase(), toUpperCase() 메소드를 사용하면 다른 방식으로 문제를 풀 수 있습니다.
function allCapital(str) {
let answer = "";
for (let x of str) {
if (x === x.toLowerCase()) answer += x.toUpperCase();
else answer += x;
}
return answer;
}
let str = "ItisTimeToStudyyyyyyyyyy";
console.log(allCapital(str)); // "ITISTIMETOSTUDYYYYYYYYYY"
(추가)
대문자는 소문자로, 소문자는 대문자로 변환
function changeAa(str) {
let answer = "";
for (let x of str) {
if (x === x.toUpperCase()) answer += x.toLowerCase();
else answer += x.toUpperCase();
}
return answer;
}
let str = "StuDyHaaaaarrRRD";
console.log(changeAa(str)); // "sTUdYhAAAAARRrrd"