【问题标题】:How to trim or split variable name in VBA word如何修剪或拆分 VBA 字中的变量名
【发布时间】:2012-05-26 11:10:27
【问题描述】:

我有一个这样的变量:

var = "word1 (should be replaced by word1)"

我需要自己获取 word1,有时它可能是一个单词,但它后面总是有 (*)。有什么方法可以删除 () 符号之间的文本,然后删除 (),然后删除最后一个单词后的任何空格?

不知道有什么办法。

【问题讨论】:

    标签: vba trim ms-word


    【解决方案1】:

    最简单的是:

    var = Trim(Mid(var, 1, InStr(var, "(") - 1))
    

    InStr返回“(”的第一次出现的索引。我减1以折扣“(”所持有的位置。

    Mid 将字符串从位置 1 的第一个字符剪切到InStr 返回的索引处。

    然后Trim 删除尾随空格。

    【讨论】:

      【解决方案2】:

      像这样?

      Sub Sample()
          Dim sVar As String
          Dim MyAr() As String
      
          sVar = "word1 (should be replaced by word1)"
      
          MyAr = Split(sVar, "(")
      
          Debug.Print MyAr(0)
      End Sub
      

      编辑

      上面的代码可以进一步缩短

      Sub Sample()
          Dim sVar As String
          sVar = "word1 (should be replaced by word1)"
          Debug.Print Split(sVar, "(")(0)
      End Sub
      

      【讨论】:

        【解决方案3】:

        我会使用 SPLIT 函数。

        arrayVar2 = split(var, "(" )
        

        您现在将拥有一个包含 2 个元素的数组。

        拆分第二个元素

        arrayVar3 = split( arrayVar2[1], ")" )
        

        然后加入:

        out = arrayVar2[0] & arrayVar3[1]
        

        只要字符串中只有一组括号,这将起作用。

        另一种方法是使用正则表达式库,但这是一个更长的答案。它不会那么高效,但如果需要处理更复杂的字符串会更好。


        更新:我比可能要求的问题更进一步。我的解决方案确保括号内的文本被删除 - 括号内的文本之后的任何文本也被保留。

        【讨论】:

        • 是的,我想我们俩同时写了我们的答案 :) 虽然很挑剔,但我要指出我的答案稍微更完整,因为它允许在括号文本之后添加文本,所以它删除了所要求的括号内的文本。 ;)
        • 没有 10 分钟的差异,但没关系 :) 关于代码更完整,我将把决定权交给你 :) 用户只想提取 "( " ;)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-02-06
        • 2017-09-20
        • 1970-01-01
        • 1970-01-01
        • 2020-04-23
        • 1970-01-01
        • 2018-03-18
        相关资源
        最近更新 更多