访问VBA |如何用另一个字符串替换字符串的一部分

时间:2011-12-18 06:31:16

标签: ms-access vba

我正在尝试创建一段代码,将一个单词替换为另一个单词。 示例:将Avenue替换为Ave,将North替换为N. 我正在使用MS Access,我可以使用SQL REPLACE函数但我想在VBA中使用Access模块​​执行此操作,以便我可以将该函数附加到其他列。

我不知道从哪里开始,所以任何输入都将非常感激。

4 个答案:

答案 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