![](/img/trans.png)
[英]need to search for social security number in thousands of documents (.doc,.docx,.pdf) in C#
[英]C# how to find the state someone was born in with their social security number
我目前正在执行一项任务,我将使用正则表达式(电话号码、出生日期、电子邮件地址、社会保障)验证各种格式。 我们的老师建议的功能之一是有一种方法可以使用他们的社会安全号码返回个人出生的状态。
xxx-xx-xxxx
前 3 位数字对应于此处概述的州/地区:http: //socialsecuritynumerology.com/prefixes.php
如果我已经将前 3 个数字隔离为一个整数,那么我是否可以快速将该数字与其相应的区号匹配?
目前我只使用if
- else
语句,但它变得非常乏味。
例子:
if (x > 0 && x<3)
return "New Hampshire";
else if (x <= 7)
return "Maine";
...
你有几个选择:
if
语句,每个州一个,就像你正在做的那样。switch
,将每个选项与一个状态匹配。 它可能看起来更干净,您可以使用脚本生成它并在必要时插入return
语句。 就乏味而言,可能比选项 1 更糟。 将文件作为文本导入,将其解析为Dictionary
并进行简单查找。 .映射在不久的将来很可能不会改变,因此稳健性论点相当没有实际意义,但就工作量而言它可能“更简单” 。 这是另一个练习正则表达式来解析您链接的文件中的行的机会。
很难说出你的技能水平以及到目前为止你的课程教给你什么,这就是为什么很难回答这些问题,而且在很大程度上这就是为什么你会得到人们的负面回应——他们认为你会已经在您的课程材料中找到了答案,并且会假设您很懒惰。
我将假设您处于基本水平,并且您已经知道如何以蛮力方式(您的 if/else 构造)解决问题,并且您真的对如何使您的代码更好而不是简单地感兴趣要求您可以复制/粘贴的解决方案。
现在,虽然您的 if/else 想法会奏效,但这是一种程序性思维方式。 您正在使用面向对象的语言,所以我建议您考虑如何使用 OO 的原则来使这项工作更好。 一个好的起点是创建一个包含您需要的所有参数的状态对象集合。 然后,您可以遍历您的状态集合并使用它们的属性来查找匹配的集合。 您可以通过从文件或数据库中读取来创建状态集合,或者甚至只是为了分配目的而对其进行硬编码。
您认为一长串if
和else if
语句可能难以处理的直觉是合理的。 不仅乏味,而且寻找正确区间的搜索效率低下。 但是,需要一些东西来处理这种乏味。 一个简单的解决方案是使用Dictionary
来存储您可以构建一次并在整个应用程序中重用的键/值对。 这样做的缺点是需要比必要更多的空间,因为每个单独的映射都成为数据结构的一个元素。 您可以改为遵循此问题的建议,并使用更适合查找范围值的数据结构。
很难从你的问题中看出你的专业水平是什么,在这里进入任何真正的细节基本上意味着为你完成你的任务。 但应该注意的是,您的解决方案本质上没有任何问题,并且根据您的教育程度,它可能是预期的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.