【问题标题】:Access VBA | How to replace parts of a string with another string访问 VBA |如何用另一个字符串替换部分字符串
【发布时间】:2012-01-22 22:17:12
【问题描述】:

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

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

男人

【问题讨论】:

  • 到目前为止你写了什么代码?
  • 正如我提到的,我可以使用:DECLARE @Mymessage varchar(100) SET @Mymessage = ‘I do not know how to do this in VBA. ‘ SELECT REPLACE(@Mymessage, ‘know’, ‘understand’) 再次编写此代码,我不知道如何在 VBA 中的模块中编写此代码。感谢您的宝贵时间。

标签: ms-access vba


【解决方案1】:

使用Access的VBA函数Replace(text, find, replacement)

Dim result As String

result = Replace("Some sentence containing Avenue in it.", "Avenue", "Ave")

【讨论】:

  • 我应该解释得更好,比如我有一个列名地址。我只是想在地址栏中替换 Avenue。你是最亮的!感谢您的宝贵意见。
  • 这是我的解决方案!谢谢你帮我解决这个问题:我们都必须先爬行,然后才能走路。公共函数 TrmChar(ReplaceChar As String) ReplaceChar = Replace(ReplaceChar, "Avenue", "Ave") TrmChar = ReplaceChar 结束函数
【解决方案2】:

我正在阅读此主题并想添加信息,即使对于 OP 来说肯定不再及时。

上面的 BiggerDon 指出了用“N”代替“North”的困难。 “大道”到“大道”也存在类似的问题(例如,“美洲大道”变成“美洲大道”:仍然可以理解,但可能不是 OP 想要的。

replace() 函数是完全上下文无关的,但地址不是。一个完整的解决方案需要有额外的逻辑来正确解释上下文,然后根据需要应用 replace()。

数据库通常包含地址,因此我想指出,编码准确性支持系统 (CASS) 已经解决了(幽默!)适用于美国境内地址的 OP 问题的通用版本。 CASS 是一种数据库工具,它接受美国地址并完成或更正以符合美国邮政局制定的标准。维基百科条目https://en.wikipedia.org/wiki/Postal_address_verification 有基础知识,更多信息可在邮局获得:https://ribbs.usps.gov/index.cfm?page=address_info_systems

【讨论】:

    【解决方案3】:

    您也可以使用类似的功能,它可以让您在不同的情况下添加您想要更改值的位置:

    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
    

    【讨论】:

    • 添加到这个答案。 1. case 可以接受多个参数:e.g.案例“大道”、“大道”。 2. 案件很重要。使用 lcase 或 ucase 进行比较
    【解决方案4】:

    因为字符串“North”可能是街道名称的开头,例如“Northern Boulevard”,街道方向始终位于街道编号和街道名称之间,并与街道编号和街道名称分开。

    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
    

    【讨论】:

      猜你喜欢
      • 2022-12-28
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      • 2019-09-26
      • 2011-03-25
      相关资源
      最近更新 更多