Salesforce Apex实现6位纯数字邮编校验的代码问题咨询
现有代码存在的问题
- 校验逻辑完全倒置:当前代码在邮编满足「纯数字组成」的正确条件时,反而输出「Pincode must be numerics only」的错误提示;长度校验也是在长度恰好为6位的正确场景下输出长度错误提示,和需求完全相反。
- 语法使用错误:Apex中String类型获取字符串长度需要调用
length()实例方法,不存在len属性,代码运行时会直接抛出异常。 - 校验覆盖不完整:当前逻辑只有邮编是纯数字的前提下才会执行长度校验,如果邮编包含非数字字符,即使长度不符合要求也不会触发长度错误提示。
修正后的实现代码
如果需求是优先提示优先级更高的错误(先校验纯数字规则,再校验长度规则,一次只报一个错误),可以用以下实现:
String pincode = '500038'; if (!pincode.isNumeric()) { System.debug('Pincode must be numerics only'); } else if (pincode.length() != 6) { System.debug('Pincode must be 6 digits'); } else { System.debug('Pincode校验通过'); }
如果需要同时输出所有不符合的规则提示,可将两个校验逻辑独立编写:
String pincode = 'abc12'; Boolean validFlag = true; if (!pincode.isNumeric()) { System.debug('Pincode must be numerics only'); validFlag = false; } if (pincode.length() != 6) { System.debug('Pincode must be 6 digits'); validFlag = false; } if (validFlag) { System.debug('Pincode校验通过'); }
内容的提问来源于stack exchange,提问作者Hari nadh babu
相关产品推荐
相关产品推荐

