대문자로 통일

heyj·2022년 3월 30일
0

Coding Test

목록 보기
11/15

대문자로 통일

모든 문자를 대문자로 통일하는 문제입니다.

문자열 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"

0개의 댓글