首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字母解码Javascript

字母解码Javascript
EN

Stack Overflow用户
提问于 2018-03-07 14:39:29
回答 1查看 59关注 0票数 0

我正在尝试编写一个函数来验证逗号中的所有条目都是数字和显示的。如果他们不是。例如:用户输入2,3,5b,c7我得到的输出是BCE?而不是公元前?这是我试图在其中验证的解码函数:

代码语言:javascript
复制
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) {
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-07 14:45:31

我修正了你的fnDecode函数。

您不需要多个if来检查isNaN!isNaN('5')将和!isNaN(5)一样工作。有关更多信息,请查看此Javascript等式表

在这里,我对函数进行了调整,使其能够使用参数中给出的String并返回想要的String

代码语言:javascript
复制
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));
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

下面是一个较短的ES6版本:

代码语言:javascript
复制
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));

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49154527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档