我一直在网上搜索。有没有办法切断空间和文件名的其余部分,但使用 VBScript 保留扩展名。
假设我有这样的文件名:
filename this is a file.txt
VBScript 是否可以切断空间和之后的所有内容,但保留这样的扩展名:
filename.txt
我一直在网上搜索。有没有办法切断空间和文件名的其余部分,但使用 VBScript 保留扩展名。
假设我有这样的文件名:
filename this is a file.txt
VBScript 是否可以切断空间和之后的所有内容,但保留这样的扩展名:
filename.txt
有几种方法可以实现您想要的:
使用正则表达式:
Set fso = CreateObject("Scripting.FileSystemObject")
Set re = New RegExp
re.Pattern = "^(\S*).*(\..*?)$"
Set f = fso.GetFile("filename this is a file.txt")
f.Name = re.Replace(f.Name, "$1$2")
使用Split
:
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile("filename this is a file.txt")
f.Name = Split(fso.GetBaseName(f))(0) & "." & fso.GetExtensionName(f)
使用字符串函数:请参阅KekuSemau 提供的答案。
当然,您可以使用 vbscript 中提供的字符串函数进行一些手术。
dim s
dim s2
s = "filename this is a file.txt"
s2 = Left(s, Instr(s, " ")-1) & Right(s, Len(s) - InstrRev(s, ".") + 1)
msgbox s2
使用 RegExp 从您的输入中删除第一个“单词”和扩展名:
>> Set r = New RegExp
>> r.Pattern = "^(\w+)(.*)(\..*)$"
>> For Each s In Array("filename this is a file.txt", "a.txt", "1a nix ...txt")
>> WScript.Echo s, """" & r.Replace(s, "$1$3") & """"
>> Next
>>
filename this is a file.txt "filename.txt"
a.txt "a.txt"
1a nix ...txt "1a.txt"
如果您坚持使用 String 操作,请使用 Mid() 而不是 Right():
>> s = "filename this is a file.txt"
>> a = Left(s, InStr(s, " ") - 1)
>> b = Mid(s, InStrRev(s, "."))
>> WScript.Echo a, b, a & b
>>
filename .txt filename.txt