【问题标题】:Most Efficient/Elegant Address Validation最高效/优雅的地址验证
【发布时间】:2010-10-21 09:32:57
【问题描述】:

我制作了这个小型位置类,以便更好地处理我将在请求中发送给 Google Maps API 的地址信息。我剩下要做的一件事是进行一些验证,以确保该地址有足够的信息来返回结果。

对于应用程序,准确度级别应该与单个城市一样松散(这意味着只要提供邮政编码或城市/州,它就应该可以工作,因为它会在 Google 中自动找到该区域的地理中心地图)。

比如:

  • 地址 1、地址 2、城市、州、邮政编码
  • Address1,城市,州,邮编
  • 地址1,城市,邮编
  • 地址 1,邮编
  • 城市,州

应该都可以工作,而像

  • 地址1,地址2,状态
  • 状态
  • 城市
  • 地址1
  • 地址2
  • 地址1,地址2

不起作用,因为它可能会返回大量结果,或者会使地理中心超出我想要的精度范围。

注意我确信我可以列出许多其他有效和无效的组合,但我希望我提供了足够的示例来正确概述此处的“精确范围”。

Public Class Location
    Private _Address1 As String
    Private _Address2 As String
    Private _City As String
    Private _State As String
    Private _ZIP As String

    Public Function isValid() As Boolean   
        'Insert validation code here'
    End Function

End Class

我知道你可以使用一大堆 If 语句来检查是否存在,是否存在其他内容,以及是否不存在其他内容,不断重复,但我觉得这将是一个大量的逻辑代码。

有没有更有效/优雅的方式来确保我在请求中发出有效的位置?

【问题讨论】:

    标签: asp.net vb.net validation google-maps


    【解决方案1】:

    就必需项而言,您的规则实际上可以归结为:

    有效地址必须包含邮政编码或同时包含城市和州。

    据我所知,满足该规则的一切都应该没问题。您的验证码可以很简单:

    Public Function isValid() As Boolean   
        If (String.IsNullOrEmpty(city) or String.IsNullOrEmpty(state)) And _
            String.IsNullOrEmpty(zip) Then
    
            Return False
        Else
            Return True
        End If
    End Function
    

    显然,您可能还想检查字段中的值是否符合预期(正确的 ZIP 长度、有效状态等)

    顺便说一句,您可能需要考虑从 IsValid 检查返回的不仅仅是布尔值。如果结果是有效的,一个简单的 true 就足够了,但通常有 false 的返回值你想知道为什么它是无效的。我通常会这样做:

    Class ValidationResult
        Public Property IsValid as Boolean
        Public Property Errors as IEnumerable<String>
    End Class
    

    【讨论】:

      【解决方案2】:

      上述标准不就可以归结为:

      Public Function isValid() As Boolean   
          Return _
              Not String.IsNullOrEmpty(_ZIP) _
              Or Not (String.IsNullOrEmpty(_City) Or String.IsNullOrEmpty(_State))
      End Function
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-21
        • 1970-01-01
        • 1970-01-01
        • 2011-10-03
        • 2017-04-29
        • 2021-07-06
        • 2019-07-04
        • 2015-03-29
        相关资源
        最近更新 更多