用VBS返回两个字符之间不同长度的值
Returning Values of Varying Length Between Two Characters with VBS
我正在尝试想出一种从文件标题中提取信息的方法。文件标题的整体命名约定将保持不变,但部分标题的字符长度会有所不同。以下是此类文件标题的两个可能示例:
- 012345678-012345-xxxx-yyyyy.txt
- 012345678-012345-xxx-yyyyyy.txt
有没有办法从这些文件标题中提取值,以便 return 出现在第二个和第三个连字符之间的任何内容?使用上面的例子会 return:
- xxxx
- xxx
此外,是否可以提取最后一个连字符和句点之间的值?使用上面的示例,它将 return:
- yyyyy
- yyyyyy
当字符长度固定时提取值是微不足道的,但我不知道当字符长度不同时是否可以进行类似的提取。我通常会使用类似这样的东西从 fixed-length 命名约定中提取信息,但不知道如何使它适应字符长度变化的东西。例如,下面的代码片段是一个提取文件标题中前九个字符的函数(在本例中它将提取“012”)。
Function getthething(foo)
getthething = Mid(foo,1,3)
End Function
任何指导将不胜感激。谢谢。
您可以使用 Split 函数完成所有这些操作。这是一个简化事情的包装函数:
Function GetField(p_sText, p_sDelimiter, p_iIndex)
Dim arrFields
arrFields = Split(p_sText, p_sDelimiter)
If UBound(arrFields) >= (p_iIndex - 1) Then
GetField = arrFields(p_iIndex - 1)
Else
GetField = ""
End If
End Function
您可以像这样使用此功能:
Dim sFileName
Dim sYs
sFileName = GetField("012345678-012345-xxxx-yyyyy.txt", ".", 1)
sYs = GetField(sFileName, "-", 4)
MsgBox sYs
或者简单地说:
MsgBox GetField(GetField("012345678-012345-xxxx-yyyyy.txt", ".", 1), "-", 4)
我正在尝试想出一种从文件标题中提取信息的方法。文件标题的整体命名约定将保持不变,但部分标题的字符长度会有所不同。以下是此类文件标题的两个可能示例:
- 012345678-012345-xxxx-yyyyy.txt
- 012345678-012345-xxx-yyyyyy.txt
有没有办法从这些文件标题中提取值,以便 return 出现在第二个和第三个连字符之间的任何内容?使用上面的例子会 return:
- xxxx
- xxx
此外,是否可以提取最后一个连字符和句点之间的值?使用上面的示例,它将 return:
- yyyyy
- yyyyyy
当字符长度固定时提取值是微不足道的,但我不知道当字符长度不同时是否可以进行类似的提取。我通常会使用类似这样的东西从 fixed-length 命名约定中提取信息,但不知道如何使它适应字符长度变化的东西。例如,下面的代码片段是一个提取文件标题中前九个字符的函数(在本例中它将提取“012”)。
Function getthething(foo)
getthething = Mid(foo,1,3)
End Function
任何指导将不胜感激。谢谢。
您可以使用 Split 函数完成所有这些操作。这是一个简化事情的包装函数:
Function GetField(p_sText, p_sDelimiter, p_iIndex)
Dim arrFields
arrFields = Split(p_sText, p_sDelimiter)
If UBound(arrFields) >= (p_iIndex - 1) Then
GetField = arrFields(p_iIndex - 1)
Else
GetField = ""
End If
End Function
您可以像这样使用此功能:
Dim sFileName
Dim sYs
sFileName = GetField("012345678-012345-xxxx-yyyyy.txt", ".", 1)
sYs = GetField(sFileName, "-", 4)
MsgBox sYs
或者简单地说:
MsgBox GetField(GetField("012345678-012345-xxxx-yyyyy.txt", ".", 1), "-", 4)