我在Excel中编写一个宏,我需要从String中获取子字符串。 就像这样。
~/tester/test/hai/bye
~/stack/overflow/hai/bye
在上面的例子中,我需要从第一个中获取String测试器,从第二个中获取堆栈。我尝试使用InStr
,但它没用。有人可以帮忙吗?
答案 0 :(得分:9)
您可以使用InStr和Mid功能执行此操作。 使用InStr函数查找/的出现次数,然后使用Mid获取您感兴趣的字符串部分。
试试这个:
Function ExtractFirstPartOfPath(path as String) as String
Dim first, second as Integer
first = InStr(path, "/")
second = InStr(first + 1, path, "/")
ExtractFirstPartOfPath = Mid(path, first + 1, second - first - 1)
End Function
此功能将产生所需的结果。
答案 1 :(得分:2)
据我所知,Excel中没有正则表达式,你必须“手工”做你想做的事。
你可以像其他人一样使用Instr来做这件事。
使用Split的另一个解决方案(此功能适用于Excel 2000及更高版本)
Function ExtractFirstPartOfPath(path as String) as String
Dim parts
parts = Split(path, "/")
ExtractFirstPartOfPath = parts(1)
End Function
答案 2 :(得分:1)
试试这个:
Sub Macro1()
Dim text As String, result As String
text = "~/tester/test/hai/bye"
result = Mid(text, 3, InStr(3, text, "/") - 3)
'MsgBox is for demo only
MsgBox result
End Sub