(已解决)关于正则双引号问题?
本帖最后由 minghui 于 2010-9-20 21:39 编辑#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 354, 292, 192, 124)
$Input1 = GUICtrlCreateInput('', 32, 16, 281, 21)
GUICtrlSetData(-1, 'CNTV-CBox 网络电视客户端安装')
$Input2 = GUICtrlCreateInput('', 32, 48, 281, 21)
GUICtrlSetData(-1, '欢迎使用"CNTV-CBox 网络电视客户端"安装向导')
$Edit1 = GUICtrlCreateEdit("", 32, 80, 281, 145)
GUICtrlSetData(-1, "")
$Button1 = GUICtrlCreateButton("Button1", 32, 240, 281, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
;GUICtrlSetData($Edit1, "WinActivate("&'"'&GUICtrlRead($Input1)&'"'&", "&'"'&GUICtrlRead($Input2)&'"'&")"&@CRLF)
EndSwitch
WEnd
主要想实现如下功能
1, 当$Input2文本内容包含有双引号时就在文本框内写入带有单双引号的文本
2, 当$Input2文本内容为"空"或没有包含双引号时就只在文本框内写入双引号(注;不包含单引号) 就是将双引号替换成单引号是吧?借你的按钮用下。
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 350, 290)
$Input1 = GUICtrlCreateInput('', 32, 16, 281, 21)
GUICtrlSetData(-1, 'CNTV-CBox 网络电视客户端安装')
$Input2 = GUICtrlCreateInput('', 32, 48, 281, 21)
GUICtrlSetData(-1, '欢迎使用"CNTV-CBox 网络电视客户端"安装向导')
$Edit1 = GUICtrlCreateEdit("", 32, 80, 281, 145)
$Button1 = GUICtrlCreateButton("Button1", 32, 240, 281, 25)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case - 3
Exit
Case $Button1
$sText = GUICtrlRead($Input2)
If StringRegExp($sText, '"|“|”') Then
MsgBox(0, '', StringRegExpReplace($sText, '"|“|”', "'"))
Else
MsgBox(0, '', '控件文本不含双引号')
EndIf
EndSwitch
WEnd 本帖最后由 afan 于 2010-9-17 18:07 编辑
木子恢复得挺快呀~
$Form1 = GUICreate("Form1", 354, 292, 192, 124)
$Input1 = GUICtrlCreateInput('', 32, 16, 281, 21)
GUICtrlSetData(-1, 'CNTV-CBox 网络电视客户端安装')
$Input2 = GUICtrlCreateInput('', 32, 48, 281, 21)
GUICtrlSetData(-1, '欢迎使用"CNTV-CBox 网络电视客户端"安装向导')
$Edit1 = GUICtrlCreateEdit("", 32, 80, 281, 145)
GUICtrlSetData(-1, "")
$Button1 = GUICtrlCreateButton("Button1", 32, 240, 281, 25)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Button1
$sI1 = GUICtrlRead($Input1)
If StringRegExp($sI1, '"') Then
$sI1 = "'" & $sI1 & "'"
Else
$sI1 = '"' & $sI1 & '"'
Endif
$sI2 = GUICtrlRead($Input2)
If StringRegExp($sI2, '"') Then
$sI2 = "'" & $sI2 & "'"
Else
$sI2 = '"' & $sI2 & '"'
Endif
GUICtrlSetData($Edit1, "WinActivate(" & $sI1 & ", " & $sI2 & ")" & @CRLF)
EndSwitch
WEnd
另注:如果没有单引号的介入其实就都用单引号就OK了$sI1 = "'" & GUICtrlRead($Input1) & "'"
$sI2 = "'" & GUICtrlRead($Input2) & "'"
GUICtrlSetData($Edit1, "WinActivate(" & $sI1 & ", " & $sI2 & ")" & @CRLF)如果有单双引号混搭的情况可参考一下此贴 http://www.autoitx.com/thread-10929-1-1.html 本帖最后由 minghui 于 2010-9-17 18:03 编辑
不好意思啊!可能我表达的不清楚
我的意思是当文本内包含有双引号时就写成下面这样的样式
包含双引号时WinActivate("CNTV-CBox 网络电视客户端安装", '"欢迎使用"CNTV-CBox 网络电视客户端"安装向导"')没包含双引号时WinActivate("CNTV-CBox 网络电视客户端安装", "欢迎使用CNTV-CBox 网络电视客户端安装向导") 谢谢已经解决了,变通一下就可以了$sI1 = "'" &$sI1& "'"换成$sI1 = "'" & '"' & $sI1 & '"' & "'" 本帖最后由 afan 于 2010-9-17 18:11 编辑
谢谢已经解决了,变通一下就可以了换成
minghui 发表于 2010-9-17 18:09 http://www.autoitx.com/images/common/back.gif
这个是没必要的~
而且,这样的结果就错了… 回复 6# afan
版主的意思是当文本内包含有双引号时,就只要单引号就可以了是吧! 回复 7# minghui
是的。你测试下就知道了 回复 6# afan
版主的意思是当文本内包含有双引号时,就只要单引号就可以了是吧!
谢谢了,试了一下切实是这样的 回复 9# minghui
所以就如我在3楼所注,如果不考虑单引号则无需判断。
页:
[1]