美文网首页
凯撒加密

凯撒加密

作者: 没头脑很不高兴 | 来源:发表于2018-01-05 11:56 被阅读0次

    准备工作

    一、

        s1 s2 都是 string
        但 s2 的长度是 1
        返回 s2 在 s1 中的下标, 从 0 开始, 如果不存在则返回 -1
    

    实现方法:

    function find(s1, s2) {
      let index = -1
      for(let i = 0;i < s1.length;i++){
        if(s2 === s1[i]){
          index = i
        }
      }
      return index
    }
    

    二、给一段全是小写字母的字符串,将其返回为全是大写的形式,这里需要上面的find函数,因为上面已经提供,这里就不写了,剩余的代码如下

    let lower = 'abcdefghijklmnopqrstuvwxyz'
    let upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    function upperCase(s){
      let s1 = s
      let s2 = ''
      for(let i = 0;i < s.length;i ++){
        let index = find(lower, s[i])
        s2 += upper[index]
      }
      return s2
    }
    console.log(upperCase('bkasdjkfbaksldj'))  // BKASDJKFBAKSLDJ
    

    三、给一段全是大写字母的字符串,将其返回为全是小写的形式
    这些代码仍然是在上面的基础上添加的

    function lowerCase(s){
      let s1 = s
      let s2 = ''
      for(let i = 0;i < s.length;i ++){
        let index = find(upper, s[i])
        s2 += lower[index]
      }
      return s2
    }
    console.log(lowerCase('FABSDAJHDBCFB'))  // fabsdajhdbcfb
    

    四、实现JavaScript自带的toUpperCase的功能(正确地处理任意的字符)

    function upperCase1(s){
      let s1 = s
      let s2 = ''
      for(let i = 0;i < s1.length;i ++){
        if(find(lower,s1[i]) > -1){
            let temp = upperCase(s1[i])
            s2 += temp
          } else{
            s2 += s1[i]
          }
      }
      return s2
    }
    console.log(upperCase1('bB1asdfbB34'))  // BB1ASDFBB34
    

    五、实现JavaScript自带的toLowerCase的功能(正确地处理任意的字符)

    function lowerCase1(s){
      let s1 = s
      let s2 = ''
      for(let i = 0;i < s1.length;i ++){
        if(find(upper,s1[i]) > -1){
            let temp = lowerCase(s1[i])
            s2 += temp
          } else{
            s2 += s1[i]
          }
      }
      return s2
    }
    console.log(lowerCase1('GYGUVG123VGVUYHhhj'))  // gyguvg123vgvuyhhhj
    

    实现凯撒加密一位

    凯撒加密是指将一串字符串的英文字母部分整体偏移 n 位的加密方法,例如可以将 qqq 整体向右偏移一位 变成 rrr

    // 这是对单个字符偏移 n 位的函数
    function shiftedChar(char, n) {
        var lower = 'abcdefghijklmnopqrstuvwxyz'
        var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
        var index = find(upper, char)
        if (index > -1) {
            var newIndex = (index + n + 26) % 26
            log('upper char', index, char)
            return upper[newIndex]
        } else {
            index = find(lower, char)
            if (index > -1) {
                var newIndex = (index + n + 26) % 26
                log('lower char', index, char)
                return lower[newIndex]
            } else {
                return char
            }
        }
    }
    // 这是对任意长的字符串实现偏移一位的函数
    function encode1(s) {
        var result = ''
        for (var i = 0; i < s.length; i++) {
            var c1 = s[i]
            var c2 = shiftedChar(c1, 1)
            log('encode', c1, c2)
            result += c2
        }
        return result
    }
    

    相关文章

      网友评论

          本文标题:凯撒加密

          本文链接:https://www.haomeiwen.com/subject/kowjnxtx.html