字母解码Javascript

时间:2018-03-07 14:39:30

标签: javascript

我正在尝试编写一个函数,该函数将验证逗号中的所有条目是否为数字并显示"?"如果他们不是。例如:用户输入2,3,5b,c7我得到的输出是BCE?而不是BC?这是我试图验证的解码函数:

function fnDecode() {
    var msg = $("textin").value;
        if(msg === "") {
        $("textin_span").innerHTML = "* Please enter a value to decode 
              *";
        $("textin").focus();
    return;
    } else {
        $("textin_span").innerHTML = "";
    }
    var nums = msg.split(","); //split method separates by delimiter
    var outstr = ""; //out string

    for (var i=0; i<nums.length; i++) {
        var n2 = parseInt(nums[i]);
        if (isNaN(n2)) { //if isNaN true, print ?

        outstr += "?";
        } else if (isNallN(nums[i])) { //THIS IS WHERE THE FN GOES
            outstr += "?";

        } else if (n2 === 0) {
            outstr += " ";
        } else if (n2 < 1 || n2 >26) {
            outstr += "?";
        }else {
            outstr += String.fromCharCode(n2+64);
        }
    }
    $("textout").value = outstr;

}

function isNallN(s) {
}

1 个答案:

答案 0 :(得分:1)

我更正了您的fnDecode功能。

您不需要多个if来检查isNaN!isNaN('5')!isNaN(5)一样有效。有关详细信息,请查看此Javascript Equality Table

  

在这里,我调整了它的功能,以便使用String   参数并返回所需的String

function fnDecode(msg) {
  var nums = msg.split(",");
  var outstr = "";

  for (num of nums) {
    if (isNaN(num)) outstr += "?"; //isNaN works on "5" and 5
    else if (+num === 0) outstr += " "; //We use +num to parse the String to an int
    else if (+num < 1 || +num > 26) outstr += "?";
    else outstr += String.fromCharCode(+num + 64);
  }
  return outstr;

}

var test = '1,2,3,4,5f,6r';
console.log(fnDecode(test));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

  

这是一个较短的ES6版本:

function fnDecode(msg) {
  return msg.split(',').map( num => isNaN(num) || (+num < 1 || +num > 26) ? '?' : +num == 0 ? ' ' : String.fromCharCode(+num + 64)).join('');
}

var test = '1,2,3,4,5f,6r';
console.log(fnDecode(test));