대문자로 이루어진 영어단어가 입력되면 단어에 포함된 ‘A'를 모두 ’#‘으로 바꾸어 출력하는 프로그램을 작성하세요.
<script>
function solution(s) {
let answer = "";
// false = 대문자가 없는 단어, true = 대문자가 존재하는 단어
let checkUpperCase = false;
// 아스키 코드를 이용해서, 주어진 단어가 대문자가 포함된 단어인지 확인하는 함수
const checkUpperCaseFunc = function () {
for (let i = 0; i < str.length; i++) {
console.log(str[i].codePointAt(0));
if (str[i].codePointAt(0) >= 65 && str[i].codePointAt(0) <= 90) {
checkUpperCase = true;
}
}
};
const switchA = function () {
// 단어의 대문자 유무를 알았으니..
if (checkUpperCase == true) {
console.log("대문자를 포함한 단어입니다.");
for (let i = 0; i < str.length; i++) {
// 이번엔 아스키코드로 'A'를 찾는다.
if (str[i].codePointAt(0) == 65) {
console.log(str[i]);
// 'A'를 찾았으니, '#'으로 바꿔주자
// 그런데 왜 splice를 사용하면 에러가 나는거지??
// str.splice(i, 1, '#');
}
}
answer = "변환된 단어: " + str;
} else {
answer = "대문자 or A를 포함하지 않는 단어입니다.";
}
};
// 테스트 ~
checkUpperCaseFunc();
switchA();
return answer;
}
let str = "BANANA";
console.log(solution(str));
</script>
A를 #으로 바꿔주는 함수를 만들었는데, 바꿔주는 부분
str.splice(i, 1, '#');
에서 splice는 함수가 아니라는 에러가 뜬다.
혹시 문자열은 splice메소드를 못 사용하는 건가 싶어서, switchA
함수를 다음과 같이 수정해봤다.
const switchA = function () {
// 단어의 대문자 유무를 알았으니..
if (checkUpperCase == true) {
console.log("대문자를 포함한 단어입니다.");
// 문자열을 배열로 변환
let newArr = Array.from(str);
for (let i = 0; i < newArr.length; i++) {
// 이번엔 아스키코드로 'A'를 찾는다.
if (newArr[i].codePointAt(0) == 65) {
newArr.splice(i, 1, "#");
}
}
// 배열을 문자열로 변환
newArr = newArr.join("");
answer = newArr;
} else {
answer = "대문자 or A를 포함하지 않는 단어입니다.";
}
};
결과는 매우 성공적!! 😆
<script>
function solution(s) {
let answer = "";
// false = 대문자가 없는 단어, true = 대문자가 존재하는 단어
let checkUpperCase = false;
// 아스키 코드를 이용해서, 주어진 단어가 대문자가 포함된 단어인지 확인하는 함수
const checkUpperCaseFunc = function () {
for (let i = 0; i < str.length; i++) {
console.log(str[i].codePointAt(0));
if (str[i].codePointAt(0) >= 65 && str[i].codePointAt(0) <= 90) {
checkUpperCase = true;
}
}
};
const switchA = function () {
// 단어의 대문자 유무를 알았으니..
if (checkUpperCase == true) {
console.log("대문자를 포함한 단어입니다.");
// 문자열을 배열로 변환
let newArr = Array.from(str);
for (let i = 0; i < newArr.length; i++) {
// 이번엔 아스키코드로 'A'를 찾는다.
if (newArr[i].codePointAt(0) == 65) {
newArr.splice(i, 1, "#");
}
}
// 배열을 문자열로 변환
newArr = newArr.join("");
answer = newArr;
} else {
answer = "대문자 or A를 포함하지 않는 단어입니다.";
}
};
// 테스트 ~
checkUpperCaseFunc();
switchA();
return answer;
}
let str = "BANANA";
console.log(solution(str));
</script>
업뎃예정!
대문자만 주어지기 때문에
let a = 'BANANA'
return a.replaceAll('A','#')
이렇게 하면 안되나요?