我正在用 Scheme (Dr. Racket) 编写一个程序来验证加拿大的邮政编码。用户输入邮政编码并得到有效与否的响应。我把布尔逻辑记下来了,但我不知道如何真正告诉它正确的格式是什么。
前任。(有效的邮政编码?N2L 3G1)=> 真
我该怎么做呢?
谢谢
我正在用 Scheme (Dr. Racket) 编写一个程序来验证加拿大的邮政编码。用户输入邮政编码并得到有效与否的响应。我把布尔逻辑记下来了,但我不知道如何真正告诉它正确的格式是什么。
前任。(有效的邮政编码?N2L 3G1)=> 真
我该怎么做呢?
谢谢
如果您想知道字符串是否具有有效邮政编码的格式,可以使用正则表达式。加拿大邮政编码由六个字符组成,交替的字母和以字母开头的数字,在第三个和第四个字符之间嵌入一个空格。一个合适的正则表达式是^[A-Z][0-9][A-Z] [0-9][A-Z][0-9]$
.
如果您想知道具有有效格式的字符串是否在邮政编码列表中,最简单的解决方案是布隆过滤器。我在我的博客中提供了一个用 Scheme 编写的布隆过滤器。
我不知道加拿大邮政编码是如何工作的,但我认为你要问的是你可能只有一长串有效代码,需要告诉程序它们没问题,没有其他代码。
使用可变哈希映射将非常适合您的目的:http ://docs.racket-lang.org/guide/hash-tables.html