https://programmers.co.kr/learn/courses/30/lessons/12951
function solution(s) {
s = s.toLowerCase();
s = s.split(" ");
for (let i = 0; i < s.length; i++) {
var firstAsciNum = s[i].charCodeAt(0);
if (firstAsciNum >= 97 && firstAsciNum <= 122) {
s[i] = s[i].split('');
s[i][0] = String.fromCharCode(firstAsciNum - 32);
s[i] = s[i].join('');
}
}
var answer = s.join(' ');
return answer;
}
var s = "3people unFollowed me";
console.log(solution(s));
문제를 보면 문자열이 주어지고 각 문자열의 단어의 맨 앞자리만 대문자가 되게 하고 나머지 문자열은 모두 소문자로 만들라는 것이다.
그렇다면 주어진 문자열을 모두 소문자로 만든다음 각 단어별 맨 앞자리가 소문자라면 대문자로 만들어주면 된다.
string.toUpperCase()
: string의 모든 문자를 대문자로 만들어주지만 string 자체를 바꾸지는 않고 결과물만 반환한다. 따라서 string 자체를 대문자로 바꾸고 싶다면 string = string.toUpperCase()
라고 해줘야한다.
아스키코드 값을 굳이 외울필요는 없으나 문자열의 몇번째 숫자를 아스키코드로 바꾸는지, 아스키코드값을 문자열로 바꾸는 과정은 알아야한다.
String.fromCharCode(asciNumber)
: 아스키숫자에 해당하는 문자열을 반환한다. string.charCodeAt(index)
: string 의 index 번째에 있는 문자열의 아스키 코드 값을 반환한다.