【发布时间】:2012-05-26 11:10:27
【问题描述】:
我有一个这样的变量:
var = "word1 (should be replaced by word1)"
我需要自己获取 word1,有时它可能是一个单词,但它后面总是有 (*)。有什么方法可以删除 () 符号之间的文本,然后删除 (),然后删除最后一个单词后的任何空格?
不知道有什么办法。
【问题讨论】:
我有一个这样的变量:
var = "word1 (should be replaced by word1)"
我需要自己获取 word1,有时它可能是一个单词,但它后面总是有 (*)。有什么方法可以删除 () 符号之间的文本,然后删除 (),然后删除最后一个单词后的任何空格?
不知道有什么办法。
【问题讨论】:
最简单的是:
var = Trim(Mid(var, 1, InStr(var, "(") - 1))
InStr返回“(”的第一次出现的索引。我减1以折扣“(”所持有的位置。
Mid 将字符串从位置 1 的第一个字符剪切到InStr 返回的索引处。
然后Trim 删除尾随空格。
【讨论】:
像这样?
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
【讨论】:
我会使用 SPLIT 函数。
arrayVar2 = split(var, "(" )
您现在将拥有一个包含 2 个元素的数组。
拆分第二个元素
arrayVar3 = split( arrayVar2[1], ")" )
然后加入:
out = arrayVar2[0] & arrayVar3[1]
只要字符串中只有一组括号,这将起作用。
另一种方法是使用正则表达式库,但这是一个更长的答案。它不会那么高效,但如果需要处理更复杂的字符串会更好。
更新:我比可能要求的问题更进一步。我的解决方案确保括号内的文本被删除 - 括号内的文本之后的任何文本也被保留。
【讨论】: