如何将包含 clipget() 参数的变量加载到单个字符数组中?

how do I load a variable containing the arguments of clipget() into an array of single characters?

我在 AutoIt 中编写了一个程序,可以自动删除 http(/s)://(/www.) 它在剪贴板中找到的任何内容。

现在我要它删除 URL 的 'page' 规范(结尾),只留下整个站点 URL。

我的第一个猜测是:

############################################################################
    (a) put the value of the variable set to clipget() into an array of single characters 
        ###    here is my question: #### how do I do that?   ###;
############################################################################
    (b) point to the third backslash in the string;
    (c) set the value to null;
    (d) move to the next argument and do the same;
    (e) repeat until end of array;
    (f) write the values of the array to a variable;
    (g) clipput() the string;
    (h) exit 

我是 AutoIt 新手。

如何将包含 clipget() 参数的变量加载到数组中?

非常感谢

这是我到目前为止所拥有的:

this app will trim all url prefixes leaving only the unique url string

这是我正在努力解决的一个例子。 '50' intiger 文字需要替换为一个函数,该函数计算从左侧到字符串末尾的第三个反斜杠之间存在的字符数。

#include <MsgBoxConstants.au3>
Local $url = ClipGet()
;#########################################################################
;########################   that '50' needs to be a function   ###########
Local $url = StringTrimRight($url, 50) 
;#########################################################################
ClipPut($url)
$newurl = ClipGet()
MsgBox($MB_SYSTEMMODAL, "", $newurl)

这是一个我越来越接近我想要的东西的例子。 我正在自己获取 'whole-site' 域语法。 现在我想 CliptPut() [3] 并删除 MsgBox。 我如何捕获 [3] 次迭代?

#include <MsgBoxConstants.au3>

Example()

Func Example()
    Local $url = CLipGet()
    Local $spliturl = StringSplit($url, '/')
    For $i = 1 To $spliturl[0] 
;#############################################################
;replace 'MsgBox()' with 'ClipPut()'    ######################
;i want to CliptPut() '[3]' only  
        MsgBox($MB_SYSTEMMODAL, "", "$spliturl[" & $i & "] - " & 
;somebody help me please    ##################################
;#############################################################
$spliturl[$i])
    Next
EndFunc

更新

所以现在我有这个:

#include <MsgBoxConstants.au3>

; Press Esc to terminate script, Pause/Break to "pause"

Global $g_bPaused = False

HotKeySet("{PAUSE}", "HotKeyPressed")
HotKeySet("{ESC}", "HotKeyPressed")
HotKeySet("!d", "HotKeyPressed") ; alt-d
HotKeySet("!c", "HotKeyPressed") ; alt-c



While 1
    Sleep(100)
WEnd

Func HotKeyPressed()
    Switch @HotKeyPressed ; The last hotkey pressed.
        Case "{PAUSE}" ; String is the {PAUSE} hotkey.
            $g_bPaused = Not $g_bPaused
            While $g_bPaused
                Sleep(100)
                ToolTip('Script is "Paused"', 0, 0)
            WEnd
            ToolTip("")

        Case "{ESC}" ; String is the {ESC} hotkey.
            Exit

        Case "!d" ; String is the alt + d hotkey.
            ;####################################################
            ;####     this is my answer   #######################
            ;set url to the string in clipboard
            $url = CLipGet()

            ;split url into pieces divided by the '/' character
            $spliturl = StringSplit($url, '/')

            ;set $site to third value in '$spliturl'
            $site = $spliturl[3]

            ;export $site to clipboard
            ClipPut($site)
                ;####    looks like it does the trick    ##########
                ;#### does anyone have a better way?    ###########
                ;##################################################
        Case "!c" ; String is the alt + c
            $sData1 = ClipGet()
                ;"replace https://" with "" and write the result to clipboard
                $sString1 = StringReplace($sData1, "https://www.", Null)
                ClipPut($sString1)
                $sData1 = ClipGet()
            $sData2 = ClipGet()
                $sString2 = StringReplace($sData2, "https://", Null)
                ClipPut($sString2)
                $sData2 = ClipGet()
            $sData3 = ClipGet()
                ;"replace https://" with "" and write the result to clipboard
                $sString3 = StringReplace($sData3, "http://www.", Null)
                ClipPut($sString3)
                $sData3 = ClipGet()
            $sData4 = ClipGet()
                $sString4 = StringReplace($sData4, "http://", Null)
                ClipPut($sString4)
                $sData4 = ClipGet()

            ;##################################################

    EndSwitch
EndFunc   ;==>HotKeyPressed

为 ClipGet() 设置一个变量 示例:Local $url = ClipGet()

使用 StringSplit() 拆分从 ClipGet() 返回的字符串 使用 '/' 作为 StringSplit() 的分隔符 示例:Local $spliturl = StringSplit($url, '/')

将另一个变量设置为 StringSplit($yourVariable, "/") 创建的数组中的第三个值 示例:Local $site = $spliturl[3]

将该值发送回剪贴板 示例 ClipPut($site)

拍拍自己的肩膀,干得好

说明:在步骤 b) 中,您正在创建子字符串数组。 在步骤 c) 中,您从数组中选择所需的子字符串并将其放入变量中。 剩下的就是蛋糕了。

#include <array.au3>

$x = _ShortenUrl("")
ConsoleWrite($x & @CRLF)

$x = _ShortenUrl("how do i load a variable containing the arguments of clipget into an array of ...")
ConsoleWrite($x & @CRLF)

Func _ShortenUrl($string)
    $url = StringRegExp($string, "(?i)(^https?://[^/]*)", 3)
    If Not @error Then $string = $url[0]
    Return $string
EndFunc   ;==>_ShortenUrl

使用 REGEX 获取所需的字符串:
(?i) 不区分大小写
^ 行首
https?:// http(s)://
[^/]* 直到下一个 /