【发布时间】:2017-05-12 19:27:17
【问题描述】:
我正在实现代码以检查用户输入是否具有有效的 ascii 代码。为了做到这一点,我找到了一些简单的方法,如下所示,
if (!firstName.matches("\\p{ASCII}*")) {
return error;
}
我在本地是基于windows操作系统的,我发现它运行良好。
经过测试,我部署到我们的 QA 系统上,它在 linux 系统上,它永远不会工作,无论是否有效的 ascii,它都会返回错误。 以前有人遇到过这种问题吗?可以给点建议吗?
【问题讨论】:
-
我猜字符串包含非打印字符。尝试打印字符串的长度,以及字符串中每个字符的整数值。
-
我认为@VGR 和@RC 说的是同一件事。您可能不需要测试
matches,您需要了解和控制您的测试数据(firstName)。顺便说一句——允许一个人的名字包含控制字符(例如 ␊ U+000A)但不是非常常见的字母字符(例如 é)是很奇怪的——除非您完全确定您的存储或其他系统仅限于 ASCII。