如何获取String的特定部分

时间:2010-03-30 06:27:53

标签: excel-vba vba excel

我在Excel中编写一个宏,我需要从String中获取子字符串。 就像这样。

~/tester/test/hai/bye
~/stack/overflow/hai/bye

在上面的例子中,我需要从第一个中获取String测试器,从第二个中获取堆栈。我尝试使用InStr,但它没用。有人可以帮忙吗?

3 个答案:

答案 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