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