2011-09-27 74 views
1

我有代表存儲在數據庫中的郵政地址的全部一種字符串,但是我想在縮寫分開時使用美國州名縮寫(例如「ca」到「CA」)從字符串的其餘部分通過任一側的空間。更改字符串中指定字符的大小寫

糟糕的辦法,我能做到這一點。將有50所陳述喜歡

If addressString.Contains(" al ") Then addressString.Replace(" al ", " AL ") 
If addressString.Contains(" ak ") Then addressString.Replace(" ak ", " AK ") 
... 

編輯:這是一個非常糟糕的方式!以下是我所做的:

addressString = StrConv(addressString, VbStrConv.ProperCase) 

'無論如何這需要完成,但它會將「ak」變成「ak」。

Static stateAbbrevs As New List(Of String)(New String() {" Ak ", " Al ", " Ar "...}) 
    For Each a In stateAbbrevs 
     If addressString.Contains(a) Then 
      addressString= addressString.Replace(a, a.ToUpper) 
     End If 
    Next 

回答

1

他們只是存儲在一個數組我猜...

Dim States() as string = new string(){" al "," al "} 
For i = 0 to States.Length -1 
     If addressString.Contains(States(i)) Then addressString = addressString.Replace(States(i), States(i).ToUpper) 
Next i 
1

真正的問題是在哪裏存儲縮寫的列表。 - 在程序中,在數據庫中,在平面文件或xml文件中。所有這些都很容易變成一個字符串列表,然後遍歷該列表,替換目標字符串中的每個事件。

Private states as list(of string) 
Private Function CapitalizeState(ByVal addressText As String) As String 
    Dim result as string = addresstext 
    For each st as string in states 
     result = Replace(result, st, st, CompareMethod := CompareMethod.Text) 
    Next 
    Return result 
End Function 

初始化列表和optimpizations被留作練習....

相關問題