Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp classic 经典ASP是数字怪诞吗?_Asp Classic_Isnumeric - Fatal编程技术网

Asp classic 经典ASP是数字怪诞吗?

Asp classic 经典ASP是数字怪诞吗?,asp-classic,isnumeric,Asp Classic,Isnumeric,刚刚遇到了一个非常奇怪的功能,其中内置的IsNumeric函数是经典的ASP 我有一个JSONArray类,它将其内容打印成字符串-它使用IsNumeric来确定是否使用“”转义值。直到今天,一切都正常工作,一个客户端报告了一个以前未看到的错误 经过一番挖掘,我发现AJAX调用返回的JSON数组中的一些记录格式不好。进一步挖掘,结果是格式类似于'2D25'的字符串将被IsNumeric计算为数值,因此不会被转义 有人知道为什么吗?ASP认为D可以与互换吗 还有,我应该如何解决这个问题?正则表达式

刚刚遇到了一个非常奇怪的功能,其中内置的IsNumeric函数是经典的ASP

我有一个JSONArray类,它将其内容打印成字符串-它使用
IsNumeric
来确定是否使用
”转义值。直到今天,一切都正常工作,一个客户端报告了一个以前未看到的错误

经过一番挖掘,我发现AJAX调用返回的JSON数组中的一些记录格式不好。进一步挖掘,结果是格式类似于
'2D25'
的字符串将被
IsNumeric
计算为数值,因此不会被转义

有人知道为什么吗?ASP认为
D
可以与
互换吗

还有,我应该如何解决这个问题?正则表达式是更好的解决方案吗


谢谢!

2D25
是十六进制值。请特别参阅:“如果表达式是包含有效十六进制或八进制数的字符串,则IsNumeric返回True。”正则表达式可能是您的最佳选择

>


在经典的ASP中,
D
用于表示
double
精度。

RegEx确实是一种解决方案,这里是这样一个解决方案的示例

Function myIsNumeric(ByVal Value)
  Set regEx = New RegExp
  regEx.pattern = "^(0|[1-9][0-9]*)$"
  myIsNumeric = Regex.Test(Value)
End Function
这里有个测试

if myIsNumeric("2D25") then
  Wscript.Echo "true"
else
  Wscript.Echo "false"
end if

gives false

我想是这样的,但是您提供的文档是针对.Net的,不适用于classic asp。啊--您是对的。classic asp中的“D”曾经用于表示“双精度”。听起来您看到的就是这个。我将为classic asp的答案添加另一个链接作为参考…您必须沿页面向下滚动大约1/2到VBScript部分。RegEx是一个合理的解决方案。但是,当在数组上进行测试(如问题所述)时,最好使用返回
RegExp
的函数。数组上的循环只需调用
。针对
RegExp
的同一实例重复测试
。正确,但可读性也很重要,我的经验是,在某些领域,vbscript是一个蜗牛,这些微小的差异无关紧要。我不认为我的建议会对可读性造成太大的损害,这取决于数组中有多少个条目。我想知道实例化一个RegExp对象和解析一个表达式需要多长时间1000次?@AnthonyWJones,请发布你的版本,我们是来学习的,不是吗?我已经看到了你的一些答案,这些答案让我学到了很多东西,尽管我用vbscript编程已经10年了(但现在快结束了,我爱上了Ruby),如果我喜欢,我会对这两种方法进行基准测试