[JS알고리즘] 대문자로 통일



대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자로 모두 통일하시오


function solution(s){
	let answer="";
  for(let x of s){
    if(x == x.toLowerCase()) answer += x.toUpperCase();
    else answer += x;
  }
  
  
  return answer;
}

let str = "ItIsTimeToStudy";
console.log(solution(str))

혹은 2번 솔루션(아스키코드 사용)

function solution(s){
	let answer="";
  for(let x of s){
    let num = x.charCodeAt();
    
    if(num >= 97 && num <= 122) answer += String.fromCharCode(num - 32)
    else answer += x;
  }
  
  
  return answer;
}

let str = "ItIsTimeToStudy";
console.log(solution(str))

2번 솔루션에서 짝이 되는 아스키넘버는 32를 빼면 된다.

그러니까 원래는 대문자 A의 아스키 코드는 65, 소문자 a의 아스키 코드는 97번이고, B는 66번 b는 98번 이런식으로 되어있기 때문에

대문자와 소문자아스키코드의 차이는 32이다.

코드에서 num-32 는 숫자이기 때문에 이걸 다시 문자로 바꿔주어야 한다. (해당 아스키넘버를 문자열로 변환)

이때 사용하는 함수가 fromCharCode() 이다.

` if(num >= 97 && num <= 122) answer += String.fromCharCode(num - 32)` 이 코드는

num이 소문자 아스키넘버이면 answer는 그 num에서 -32를 한 숫자에 해당하는 문자열을 answer로 넣으라는 뜻이다




inflearn 자바스크립트 알고리즘 강의 내용 =)




© 2018. by sora

Powered by sora