为什么无效("整数","1,5")=是?

Sey*_*sen 12 validation coldfusion integer coldfusion-9

为什么#isValid("integer","1,5")#输出是?我希望它输出NO就像#isValid("integer","1.5")#.

我要用<CFIF isvalid("integer","1,5") AND isnumeric("1,5")>... 验证

Hen*_*nry 18

Adobe意识到这一点,但......

州:已关闭

状态:撤回

原因:AsDesigned

https://bugbase.adobe.com/index.cfm?event=bug&id=3169196

TBH我有点不好意思使用一种甚至无法正确验证整数的语言.

更新:

猜猜看,它将在CF12中得到解决!

毫无疑问,这种行为是不正确的.这显然是错误的,应予以纠正.然而,它一直是这样的,并且做出这样一个根本性的改变有很大的潜力打破很多应用程序.我们不希望在此版本中执行此操作.由于Rakshith已经沟通,我们计划在'Dazzle'中进行这样的更改,我们将纠正行为,而不必担心向后兼容性.

http://blog.adamcameron.me/2014/02/can-we-please-agree-that-adobe-is-not.html

  • 我也很尴尬 - 并且因为向后兼容原因而指责不修复cf8错误?真?如果功能被破坏,人们将不会使用它.他们的旧代码究竟是他们试图维护的? (10认同)

Ada*_*ron 17

只是为了扩展这里的答案并解释实际发生的事情.

请参阅此相关错误,其中详细信息的摘要是CF将" m,n"(在何处mn是数字)解释为DATE(如果可能的话).这是荒谬的:" m,n"不是一种代表地球上任何人的日期的格式,因此CF没有理由以这种方式解释它.

Adobe没有解决这个问题,并引用了相同的理由,即它会向后冲突.胡说八道吧.

无论如何...因为日期可以转换为CF中的整数,CF认为"1,5"是一个合法的整数,因为它实际上是一个日期.作为一个专门的CF开发人员,它是多么令人尴尬的是必须为你提供而不是解释.抱歉.

  • 同意.在无类型语言中,当你想要/需要它时,它会更加有意义地进行坚如磐石的类型检查. (5认同)
  • 我正在尝试收集社区对所有这些的反应的一些统计数据,我将以某种方式获得Adobe.如果可能的话,如果你能看一下我碰到的这篇文章会很方便(http://adamcameroncoldfusion.blogspot.co.uk/2012/07/according-to-06-60-and-both- are.html),以及本次调查(http://www.surveymonkey.com/s/JN5X8TS). (3认同)

Mik*_*ser 10

如果你想确保你有一个Integer,你可以使用Java Integer方法.

<cfscript>
createObject("java","java.lang.Integer").parseInt("1,5");
</cfscript>
Run Code Online (Sandbox Code Playgroud)

当给出任何不能解释为Integer的东西时,抛出parseInt()方法.这包括"1,5".

  • 我更喜欢`function isInteger(num){return refind(“ ^ \ d + $”,num);}`。:) (2认同)