我正在尝试创建一段代码,将一个单词替换为另一个单词。 示例:将Avenue替换为Ave,将North替换为N. 我正在使用MS Access,我可以使用SQL REPLACE函数但我想在VBA中使用Access模块执行此操作,以便我可以将该函数附加到其他列。
我不知道从哪里开始,所以任何输入都将非常感激。
盖
答案 0 :(得分:60)
使用Access的VBA功能Replace(text, find, replacement)
:
Dim result As String
result = Replace("Some sentence containing Avenue in it.", "Avenue", "Ave")
答案 1 :(得分:3)
我正在阅读这个帖子,并希望添加信息,即使OP肯定不再及时。
上面的BiggerDon指出了用“N”代替“North”的死记硬背。 “Avenue”与“Ave”存在类似的问题(例如“美洲大道”变成“美洲大道”:仍然可以理解,但可能不是OP想要的。
replace()函数完全没有上下文,但地址不是。完整的解决方案需要有额外的逻辑来正确解释上下文,然后根据需要应用replace()。
数据库通常包含地址,因此我想指出,编码准确性支持系统(CASS)已经解决了应用于美国境内地址的OP问题的通用版本(幽默!)。 CASS是一种数据库工具,它接受美国地址并完成或更正它以符合美国邮政服务的标准。维基百科条目https://en.wikipedia.org/wiki/Postal_address_verification具有基础知识,邮局提供了更多信息:https://ribbs.usps.gov/index.cfm?page=address_info_systems
答案 2 :(得分:2)
您也可以使用与此类似的功能,它允许您在不同的情况下添加您想要更改值的内容:
Public Function strReplace(varValue As Variant) as Variant
Select Case varValue
Case "Avenue"
strReplace = "Ave"
Case "North"
strReplace = "N"
Case Else
strReplace = varValue
End Select
End Function
然后您的SQL会读取类似的内容:
SELECT strReplace(Address) As Add FROM Tablename
答案 3 :(得分:2)
由于字符串“North”可能是街道名称的开头,例如“北大道”,街道方向始终在街道号码和街道名称之间,并与街道号码和街道名称分开。
Public Function strReplace(varValue As Variant) as Variant
Select Case varValue
Case "Avenue"
strReplace = "Ave"
Case " North "
strReplace = " N "
Case Else
strReplace = varValue
End Select
End Function