如何避免使用无穷无尽的嵌套替换方法来缩写街道地址?
How can I avoid using endless nested replace methods to abbreviate street addresses?
我很难弄清楚如何编写一些 Visual Basic 代码来替换看似无穷无尽的嵌套系列 Replace()
方法。这是我现在拥有的:
Replace(Replace(Replace(Replace(Replace(Replace(Replace(rs("street"), "Blvd.", "Boulevard"), "St.", "Street"), "Lane", "Ln."), "Avenue", "Ave."), "Road", "Rd."), "Highway", "Hwy."), "Court", "Ct.")
一定有办法创建一个函数,给它传递一个地址,并更有效地实现我所追求的目标。
可以使用临时变量将这样的语句分解为一系列操作:
street = rs("street")
street = Replace(street, "Blvd.", "Boulevard")
street = Replace(street, "St.", "Street")
street = Replace(street, "Lane", "Ln.")
street = Replace(street, "Avenue", "Ave.")
street = Replace(street, "Road", "Rd.")
street = Replace(street, "Highway", "Hwy.")
street = Replace(street, "Court", "Ct.")
如果您需要更通用的方法来进行任意替换,您可以实现一个函数,该函数将一个值和一个字典数据结构作为参数,然后遍历字典并用相应的值替换每个键。
VBScript 中的示例实现:
streetReplacements = CreateObject("Scripting.Dictionary")
streetReplacements.Add "Blvd.", "Boulevard"
streetReplacements.Add "St.", "Street"
streetReplacements.Add "Lane", "Ln."
...
Function CustomReplace(ByVal str, map)
For Each key In map.Keys
str = Replace(str, key, map(key))
Next
CustomReplace = str
Function
foo = CustomReplace(rs("street"), streetReplacements)
我很难弄清楚如何编写一些 Visual Basic 代码来替换看似无穷无尽的嵌套系列 Replace()
方法。这是我现在拥有的:
Replace(Replace(Replace(Replace(Replace(Replace(Replace(rs("street"), "Blvd.", "Boulevard"), "St.", "Street"), "Lane", "Ln."), "Avenue", "Ave."), "Road", "Rd."), "Highway", "Hwy."), "Court", "Ct.")
一定有办法创建一个函数,给它传递一个地址,并更有效地实现我所追求的目标。
可以使用临时变量将这样的语句分解为一系列操作:
street = rs("street")
street = Replace(street, "Blvd.", "Boulevard")
street = Replace(street, "St.", "Street")
street = Replace(street, "Lane", "Ln.")
street = Replace(street, "Avenue", "Ave.")
street = Replace(street, "Road", "Rd.")
street = Replace(street, "Highway", "Hwy.")
street = Replace(street, "Court", "Ct.")
如果您需要更通用的方法来进行任意替换,您可以实现一个函数,该函数将一个值和一个字典数据结构作为参数,然后遍历字典并用相应的值替换每个键。
VBScript 中的示例实现:
streetReplacements = CreateObject("Scripting.Dictionary")
streetReplacements.Add "Blvd.", "Boulevard"
streetReplacements.Add "St.", "Street"
streetReplacements.Add "Lane", "Ln."
...
Function CustomReplace(ByVal str, map)
For Each key In map.Keys
str = Replace(str, key, map(key))
Next
CustomReplace = str
Function
foo = CustomReplace(rs("street"), streetReplacements)