0

我一直在网上搜索。有没有办法切断空间和文件名的其余部分,但使用 VBScript 保留扩展名。

假设我有这样的文件名:

filename this is a file.txt

VBScript 是否可以切断空间和之后的所有内容,但保留这样的扩展名:

filename.txt
4

3 回答 3

1

有几种方法可以实现您想要的:

  • 使用正则表达式

    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 提供的答案

于 2013-08-19T18:35:10.623 回答
1

当然,您可以使用 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
于 2013-08-19T18:15:12.817 回答
0

使用 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
于 2013-08-19T18:31:23.317 回答