报告一个String.au3的BUG!!!
在String.au3里面的函数Func _StringBetween($sString, $sStart, $sEnd, $fCase = False); Set correct case sensitivity
If $fCase = Default Then
$fCase = False
EndIf
Local $sCase = "(?is)"
If $fCase Then
$sCase = "(?s)"
EndIf
; If you want data from beginning then replace blank start with beginning of string
$sStart = $sStart ? "\Q" & $sStart & "\E" : "\A"
; If you want data from a start to an end then replace blank with end of string
$sEnd = $sEnd ? "(?=\Q" & $sEnd & "\E)" : "\z"
Local $aReturn = StringRegExp($sString, $sCase & $sStart & "(.*?)" & $sEnd, 3)
If @error Then Return SetError(1, 0, 0)
Return $aReturn
EndFunc ;==>_StringBetween
里面的最后一句
Return $aReturn
应该改成
Return $aReturn
不信你就试试!! 哪个版本的? 哪个版本的?
netegg 发表于 2015-1-15 14:46 http://www.autoitx.com/images/common/back.gif
都是这样的 StringRegExp 的标识是 3,可以匹配多组,你这样只返回第一个才是错误。
不过,这个函数一看就有问题,当然不是LZ提出的,而是未转义会有隐患。 StringRegExp 的标识是 3,可以匹配多组,你这样只返回第一个才是错误。
不过,这个函数一看就有问题,当 ...
afan 发表于 2015-1-15 15:02 http://www.autoitx.com/images/common/back.gif
是的StringRegExp应该返回一个数组 本帖最后由 netegg 于 2015-1-15 15:26 编辑
Func _StringBetween($sString, $sStart, $sEnd, $fCase = Default)
Local $sCase = "(?is)"
If Not $fCase Then $sCase = "(?s)"
; If you want data from beginning then replace blank start with beginning of string
$sStart = "\Q" & $sStart & "\E"
If $sStart = "\Q\E" Then $sStart = "\A"
; If you want data from a start to an end then replace blank with end of string
$sEnd = "\Q" & $sEnd & "\E"
If $sEnd = "\Q\E" Then $sEnd = "\z"
Local $aReturn = StringRegExp($sString, $sCase & $sStart & "(.*?)" & $sEnd, 3)
If @error Then Return SetError(1, 0, 0)
Return $aReturn
EndFunc ;==>_StringBetween
我的为什么是这样的,我知道了,你用的是3.3.9.21+吗,不是的话,不支持三目运算,所以返回值不会是数组,是个定值 我的为什么是这样的,我知道了,你用的是3.3.9.21+吗,不是的话,不支持三目运算
netegg 发表于 2015-1-15 15:22 http://www.autoitx.com/images/common/back.gif
我的三个版本都是这样的 虽然代码有所不同 但是最后一句都是一样的 Local $aReturn = StringRegExp这行出来的是数组,应该没问题 $sEnd = $sEnd ? "(?=\Q" & $sEnd & "\E)" : "\z"
这行和上面那行出来的只是字符串 我的三个版本都是这样的 虽然代码有所不同 但是最后一句都是一样的
eaglelin 发表于 2015-1-15 15:26 http://www.autoitx.com/images/common/back.gif
不是说了应该是返回数组吗,怎么还在纠结?你那样只返回一个元素是错误的。
不支持三目运算,所以返回值不会是数组,是个定值 ...
netegg 发表于 2015-1-15 15:22 http://www.autoitx.com/images/common/back.gif
不支持三目运算AutoIt会直接报错退出,还返回个毛线… Return $aReturn
只是返回第一个匹配项吧 如果没有匹配项是没有$aReturn的 本帖最后由 eaglelin 于 2015-1-15 15:42 编辑
不是说了应该是返回数组吗,怎么还在纠结?你那样只返回一个元素是错误的。
不支持三目运 ...
afan 发表于 2015-1-15 15:34 http://www.autoitx.com/images/common/back.gif
但是在实际应用里面
返回 Return $aReturn 结果正确 但是在实际应用里面
返回 Return $aReturn 结果正确
eaglelin 发表于 2015-1-15 15:41 http://www.autoitx.com/images/common/back.gif
如果我需要所有匹配段呢? 回复 10# afan
也对
页:
[1]
2