[已解决]字符串操作,读取字符最后一个'\'之前的全部字符,看还有没有别的办法
本帖最后由 天堂泪吻泪 于 2010-11-18 20:39 编辑{:face (270):}{:face (198):}
搜索到在下都快头晕了,但还是找不到好的办法
就是想读取'\'之前的全部字符串,最后一个'\'不存在都行
结果为 'A:\B\C\' 或者 'A:\B\C' 都行
在下资质愚钝,还请大家指教!
在下用的代码如下:
Dim $str1, $str2
Dim $aStr
Dim $n1,$n2
$str1 = 'A:\B\C\D.EFG'
$aStr = StringSplit($str1, '\')
$n1=StringLen($aStr[$aStr])
$n2=StringLen($str1)
$str2=StringLeft($str1,$n2-$n1)
MsgBox(0, '', $str2)
思路就是以'\'拆分成数组,再读取最后一个数组'D.EFG'的字符长度,再用$str1的长度减去'D.EFG'的长度 Local $Str = 'A:\B\C\D.EFG'
MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExpReplace($str, '(.+)\\[^\\]*$', '$1')
MsgBox(0, '替换结果', $Test)
用正则:$str = 'A:\B\C\D.EFG'
$str = StringRegExpReplace($str,'(.+\\).*','$1')
msgbox(0,'',$str) 本帖最后由 kxing 于 2010-11-17 02:35 编辑
不会正则的话也可以用 stringinstr 和 stringleft 搭配使用。
Local $Str = 'A:\B\C\D.EFG'
$Str = StringLeft($Str,StringInStr($Str,'\',2,-1))
MsgBox(0,'',$Str)
给afan大抢先了!!! _WinAPI_PathFindNextComponent 想给你回下,这么多人占座呀,我刚需要的是最后一个\后面的字符,呵呵.....
我用的是四楼的方法,不会正则. #Include <WinAPIEx.au3>
$a = _WinAPI_PathFindFileName('A:\B\C\D.EFG')
msgbox(0,"短文件名", $a) 方法多样啊,谢谢大家了!
页:
[1]