使用 JavaScript 中的二进制数字交换字符串大小写


问题

我们需要编写一个 JavaScript 函数,该函数接收一个字符串 str 和一个数字 n。我们的函数应使用 n 来修改给定的字符串 str。

n 中的每一位都将指定是否交换 s 中的每个字母字符的大小写 −

如果该位为 1,则交换大小写;如果为 0,则保持原样。当我们完成 n 的最后一位时,从第一位重新开始。

最后,我们应返回由此形成的新字符串。

示例

以下是代码 −

 Live Demo

const str = 'hey there';
const num = 21;
const swapCase = (str = '', num = 1) => {
   const alphaLength = str
   .split('')
   .reduce((acc, val) => val.toLowerCase() !== val.toUpperCase() ? ++acc : acc, 0);
   let binary = num.toString(2);
   while(binary.length < alphaLength){
      binary += binary;
   };
   let res = '';
   for(let i = 0; i < str.length; i++){
      const el = str[i];
      if(el.toUpperCase() !== el.toLowerCase() && +binary[i] === 1){
         if(el.toLowerCase() === el){
            res += el.toUpperCase();
         }else{
            res += el.toLowerCase();
         }
      }else{
         res += el;
      };
   };
   return res;
};
console.log(swapCase(str, num));

输出

以下是有控制台输出

HeY TheRe

更新于: 17-Apr-2021

浏览 149 次

开启 职业生涯

完成课程,获取认证

开始学习
广告