【问题标题】:How to do string replace using if else condition如何使用 if else 条件进行字符串替换
【发布时间】:2018-01-12 17:49:41
【问题描述】:

我正在页面 about:blank on chrome 上做一个这个项目,这意味着除了 JavaScript 之外没有其他代码。

我正在尝试使用我所拥有的知识来制作加密算法。到目前为止的代码如下:

function main() {
    var input = prompt("Enter a string")
    if (input.substring(0, 1) == "a") {
      var _01 = "a"
      var _01new = _01.replace("a", "1")
    }
    else if (input.substring(0, 1) == "b") {
      var _01 = "b"
      var _01new = _01.replace("b", "2")
    }
    else if (input.substring(0, 1) == "c") {
      var _01 = "c"
      var _01new = _01.replace("c", "3")
    }
    else if (input.substring(0, 1) == "d") {
      var _01 = "d"
      var _01new = _01.replace("d", "4")
    }
    else if (input.substring(0, 1) == "e") {
      var _01 = "e"
      var _01new = _01.replace("e", "5")
    }
    else if (input.substring(0, 1) == "f") {
      var _01 = "f"
      var _01new = _01.replace("f", "6")
    }
    else if (input.substring(0, 1) == "g") {
      var _01 = "g"
      var _01new = _01.replace("g", "7")
    }
    else if (input.substring(0, 1) == "h") {
      var _01 = "h"
      var _01new = _01.replace("h", "8")
    }
    else if (input.substring(0, 1) == "i") {
      var _01 = "i"
      var _01new = _01.replace("i", "9")
    }
    else if (input.substring(0, 1) == "j") {
      var _01 = "j"
      var _01new = _01.replace("j", "10")
    }
    else if (input.substring(0, 1) == "k") {
      var _01 = "k"
      var _01new = _01.replace("k", "11")
    }
    else if (input.substring(0, 1) == "l") {
      var _01 = "l"
      var _01new = _01.replace("l", "12")
    }
    else if (input.substring(0, 1) == "m") {
      var _01 = "m"
      var _01new = _01.replace("m", "13")
    }
    else if (input.substring(0, 1) == "n") {
      var _01 = "n"
      var _01new = _01.replace("n", "14")
    }
    else if (input.substring(0, 1) == "o") {
      var _01 = "o"
      var _01new = _01.replace("o", "15")
    }
    else if (input.substring(0, 1) == "p") {
      var _01 = "p"
      var _01new = _01.replace("p", "16")
    }
    else if (input.substring(0, 1) == "q") {
      var _01 = "q"
      var _01new = _01.replace("q", "17")
    }
    else if (input.substring(0, 1) == "r") {
      var _01 = "r"
      var _01new = _01.replace("r", "18")
    }
    else if (input.substring(0, 1) == "s") {
      var _01 = "s"
      var _01new = _01.replace("s", "19")
    }
    else if (input.substring(0, 1) == "t") {
      var _01 = "t"
      var _01new = _01.replace("t", "20")
    }
    else if (input.substring(0, 1) == "u") {
      var _01 = "u"
      var _01new = _01.replace("u", "21")
    }
    else if (input.substring(0, 1) == "v") {
      var _01 = "v"
      var _01new = _01.replace("v", "22")
    }
    else if (input.substring(0, 1) == "w") {
      var _01 = "w"
      var _01new = _01.replace("w", "23")
    }
    else if (input.substring(0, 1) == "x") {
      var _01 = "x"
      var _01new = _01.replace("x", "24")
    }
    else if (input.substring(0, 1) == "y") {
      var _01 = "y"
      var _01new = _01.replace("y", "25")
    }
    else if (input.substring(0, 1) == "z") {
      var _01 = "z"
      var _01new = _01.replace("z", "26")
    }
    else (input.substring(0, 1) == " ")
    {
      var _01 = " "
      var _01new = _01.replace(" ", "27")
    }

    alert(_01new)
}  

main()

我知道有很多代码,我将对其进行简化,但首先我试图让它工作。

我想要做的是,当用户输入一个字符串(当前是 1 个字母)时,它会找到第一个字母的值,检测它是什么,并将 _01 的值设置为用户输入的任何值,然后使用 _01.replace 将字母替换为其指定值(当前为字母数值)。

【问题讨论】:

  • 你还没有问过问题。
  • _01.replace("a", "1") 你为什么不干脆 var _01new = 1 ? :)(我仍然不知道你在这种算法背后的想法......)
  • 你可能想谷歌“switch case javascript”。
  • 为什么不用rot13 替换所有代码呢? stackoverflow.com/a/41627755/362536
  • 我已经看到了一个你很快就会遇到的问题。如果你将mm 编码为1313 告诉我,你怎么可能知道解码字符?它可以被解码为acac ...(这只是四分之一)我建议你回到白板。

标签: javascript if-statement


【解决方案1】:

对于多个字符,您的逻辑将失败。
只有当且仅当用户输入 one 字符时,您的 encode(/decode) 想法才能唯一有效。

如果用户输入"mm" 作为字符串会怎样。它被编码为"1313",你永远不会知道如何正确解码它(好吧,除非你使用数组[13,13] 或其他一些加密魔法;))
我会把这个留给你。

现在,一个字符到数字的答案/建议......

// Create an Object literal with mapped character replacements
var map = {
  "a" : 1,  // Or use some other fancy UTF8 characters or shuffle the order
  "b" : 2,
  "c" : 3,
  // and so on...
  "y" : 25,
  "z" : 26,
  " " : 27
}

function main() {

    var input = prompt("Enter a character!");
    var encrypted = -1; // Fallback number. (If no replacement found in our `map`)

    // check if `map` has this "character" property
    if ( map.hasOwnProperty(input[0]) ) {
        // get the value from our map,
        // where `input[0]` represents the first character
        encrypted = map[input[0]];
    }

    alert( encrypted ); // Will alert the replacement number or log -1 as fallback
}  

main()
TRY USING ONLY ONE OF: "a b c y z (space)"

这里有一些更简单的东西——但也不是很安全;) 您可以使用btoa()MDN字符串 转换为base64 - 而当您想阅读“秘密消息” 时,您可以简单地在编码后执行btoa()MDN字符串

function main() {

    var input = prompt("Enter a string!").trim();
    var encode = btoa( input ); // String to base64
    var decode = "";
    
    if ( !encode )  return; // Do nothing if nothing valid was entered
    
    alert( encode );
    
    // Whenever you want to reveal your secret message:
    decode = atob( encode );
    alert( "Hey I can also decode! Here you go:\n"+ decode);

}  

main()

我发现您对这类东西很感兴趣...所以谷歌,了解 cyphers 和其他加密算法。从探索基本的开始:

【讨论】:

    猜你喜欢
    • 2019-04-18
    • 2010-12-23
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 2019-05-06
    • 2015-09-23
    • 2021-02-16
    • 1970-01-01
    相关资源
    最近更新 更多