我正在使用Scheme (Dr.racket)编写一个程序来验证加拿大的邮政编码。用户输入一个邮政编码,并得到一个响应,无论它是否有效。我写下了布尔逻辑,但是我不知道如何告诉它正确的格式是什么。
例如。(有效邮政编码?N2L 3G1) => true
我该怎么做呢?
谢谢
发布于 2013-02-06 02:54:52
如果要了解字符串是否具有有效邮政编码的格式,可以使用正则表达式。加拿大邮政编码由六个字符组成,以字母开头的交替字母和数字,在第三个和第四个字符之间嵌入一个空格。一个合适的正则表达式是^[A-Z][0-9][A-Z] [0-9][A-Z][0-9]$。
如果您想知道具有有效格式的字符串是否在邮政编码列表中,最简单的解决方案是bloom过滤器。我在my blog上提供了一个bloom filter,是用Scheme编写的。
发布于 2013-02-06 02:47:01
我不知道加拿大的邮政编码是如何工作的,但我认为您所问的是,您可能只是有一个长长的有效代码列表,需要告诉程序它们是正常的,而其他代码是没有问题的。
使用可变的散列映射将非常适合您的目的:http://docs.racket-lang.org/guide/hash-tables.html
https://stackoverflow.com/questions/14714538
复制相似问题