凯撒加密

准备工作

一、

    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
}

你可能感兴趣的:(凯撒加密)