Javascript 带异常处理的数字基转换
我有一个函数,它转换任意有效数字基及其基数的数字的字符串表示形式。如何正确处理无效数字(如在小于11的基数中使用A-K字符)?在无效的情况下,我想返回-1 到目前为止,我使用isNan()检查取得了一定程度的成功,但它以十进制为基础(convert(“5A6E”,10)) 到目前为止,我的代码是:Javascript 带异常处理的数字基转换,javascript,Javascript,我有一个函数,它转换任意有效数字基及其基数的数字的字符串表示形式。如何正确处理无效数字(如在小于11的基数中使用A-K字符)?在无效的情况下,我想返回-1 到目前为止,我使用isNan()检查取得了一定程度的成功,但它以十进制为基础(convert(“5A6E”,10)) 到目前为止,我的代码是: function convert(strNumber, radix) { a = parseInt(strNumber, radix) if(isNaN(a)){ return -
function convert(strNumber, radix) {
a = parseInt(strNumber, radix)
if(isNaN(a)){
return -1
}
else {
return a
}
}
在您的示例“5A6E”中,返回5,因为parseInt就是这样工作的-请参阅文档中的示例:
在上面页面的底部,您将看到一个标题为“一个更严格的解析函数”的部分,它似乎可以使用正则表达式完成您想要的功能
更新:进一步考虑这个问题,“Stricker解析函数”只适用于base 10。为了更灵活,您应该添加一个查看基数的函数,并在此基础上检查strNumber中的无效字符,如果找到,则返回-1,如果没有,则调用parseInt
例如,如果基数=2,则除0和1之外的所有字符都无效。如果是11,则除0-9和“a”之外的所有字符都无效
单调乏味,但它可以做你想做的。如何失败
convert(“5A6E”,10)
返回5
。如果我正确理解数字基数,我想这就是问题所在,“5A6E”不应该是十进制基数中的有效数字,因为它由0-9组成。我错了吗?我一开始就在想这个问题,但我想问是否有更优雅的解决方案。谢谢你提供的信息。