我有一个函数可以转换任何有效数字基数及其基数的字符串表示形式。如何正确处理无效数字(例如在基础中使用A-K字符< 11)?在无效的情况下,我想返回-1。
到目前为止,我能够通过isNan()检查取得一定程度的成功,但它在十进制基数上打破(转换(“5A6E”,10))。
到目前为止我的代码:
function convert(strNumber, radix) {
a = parseInt(strNumber, radix)
if(isNaN(a)){
return -1
}
else {
return a
}
}
答案 0 :(得分:0)
在破损示例“5A6E”中,您将返回5,因为这是parseInt的工作方式 - 请参阅文档中的示例:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt
在上面的页面底部,您会看到一个标题为“更严格的解析功能”的部分,它似乎可以使用RegEx执行您要查找的内容。
更新:在进一步考虑这一点时,“Stricker解析函数”仅适用于基数10.为了更灵活,您应该添加一个查看基数的函数,并在此基础上检查无效字符在strNumber中,如果找到则返回-1,否则调用parseInt。
例如,如果radix = 2,则除0和1之外的所有字符都无效。如果是11,则除0-9和'a'之外的所有字符都无效。
乏味,但它会做你想要的。