如何从字符串中获取文件名
请教一下大伙儿,比如我有一字符串c:\autoit\kernel\kernel.exe怎么能得到kernel.exe这个文件名呢 ,谢谢。
[ 本帖最后由 Netfox 于 2008-5-27 15:49 编辑 ] $arr = StringSplit("c:\autoit\kernel\kernel.exe", "\")
Msgbox(0, "", $arr) $Str = "c:\autoit\kernel\kernel.exe"
MsgBox(0,0,StringRight($Str,Stringlen($Str) - StringInStr($Str, "\",0,-1)))
$S = StringSplit($Str,"\")
MsgBox(0,0,$S[$S])
两种方法,都比较死板....
[ 本帖最后由 漠北雪~狼 于 2008-5-27 15:37 编辑 ] 谢谢大家的及时回答,我给三楼的代码是一样的原理 ,可是得到的结果,如果中文的话,却是乱码,
$vname = FileReadLine(@ScriptDir & "log.txt")
;If @error = -1 Then ExitLoop
if StringInStr($vname,"=") Then
$v = StringSplit($vname,"=")
$vname =$v
Else
$vname = $vname
EndIf
$filename = StringInStr($vname,"\",0,-1)
$a = StringLen($vname)
$b = $a - $filename
MsgBox(0,"",StringRight($vname,$b-1))
[ 本帖最后由 Netfox 于 2008-5-27 15:49 编辑 ] 不好意思,呵呵,解决了,取右边的时候,多去减了一个字符。
MsgBox(0,"",StringRight($vname,$b-1)) 那你不如试下这个,或等叁恨来回答了...$S = StringSplit($Str,"\")
MsgBox(0,0,$S[$S]) #include <file.au3>
#include <array.au3>
Dim $szDrive, $szDir, $szFName, $szExt
$TestPath = _PathSplit(@ScriptFullPath, $szDrive, $szDir, $szFName, $szExt)
_ArrayDisplay($TestPath,"Demo _PathSplit()") 原帖由 sanhen 于 2008-5-27 16:18 发表 http://www.autoitx.com/images/common/back.gif
#include
#include
Dim $szDrive, $szDir, $szFName, $szExt
$TestPath = _PathSplit(@ScriptFullPath, $szDrive, $szDir, $szFName, $szExt)
_ArrayDisplay($TestPath,"Demo _PathSplit()")
好像沒一個屬性是檔案的FullName(不包含Path)的@@..
不過小弟剛接觸au3...現在又多認識一個UDF(File.au3)了..
小弟錯了...原來$szFName, $szExt 加起來就是了....
$TestPath的第3及4個也是同理
[ 本帖最后由 getcase 于 2008-5-27 16:39 编辑 ] 嘿嘿,人都来齐了
回复 1# Netfox 的帖子
$path="c:autoitkernelkernel.exe"Dim $info = [$path, _
StringMid($info, 1, StringInStr($info, "", 0, -1) - 1), _
StringMid($info, StringInStr($info, "", 0, -2) + 1, StringInStr($info, "", 0, -1) - StringInStr($info, "", 0, -2) - 1), _
StringMid($info, StringInStr($info, "", 0, -3) + 1, StringInStr($info, "", 0, -2) - StringInStr($info, "", 0, -3) - 1), _
StringMid($info, StringInStr($info, "", 0, -1) + 1), _
StringMid($info, 1, StringInStr($info, ".", 0, -1) - 1), _
StringReplace(StringMid($info, StringInStr($info, ".", 0, -1) + 1), $info, "") ]
;全部一起解决++++++++++++++
;$info 完整文件路径
;$info 文件路径
;$info 文件夹
;$info 上一级文件夹
;$info 完整文件名
;$info 文件名
;$info 扩展名 原帖由 Netfox 于 2008-5-27 15:24 发表 http://www.autoitx.com/images/common/back.gif
请教一下大伙儿,比如我有一字符串c:\autoit\kernel\kernel.exe
怎么能得到kernel.exe这个文件名呢 ,谢谢。
利用正则表达式的贪婪性如何?
MsgBox(0,"test",StringRegExpReplace("c:\autoit\kernel\kernel.exe",".*\\",""));
不用正则表达式的贪婪性:
MsgBox(0,"test",StringRegExpReplace("c:\autoit\kernel\kernel.exe",".*\\(?=[^\\]*$)",""));
[ 本帖最后由 gzken 于 2008-10-23 10:18 编辑 ] 呵呵,引贴真人齐!!
页:
[1]