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

问题描述 投票:1回答:1

我在AutoIt中编写了一个程序,该程序会自动从剪贴板中找到的所有内容中删除http(/s)://(/www.)

现在,我希望它删除URL的“页面”规范(结尾),仅保留整个站点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)

这里是我越来越接近自己想要的东西的例子。我自己获得了“整个站点”域语法。现在,我想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
windows-10 copy-paste autoit
1个回答
0
投票
使用StringSplit()分割从ClipGet()返回的字符串使用'/'作为StringSplit()的分隔符例如:Local $spliturl = StringSplit($url, '/')

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

将那个值发送回剪贴板例如ClipPut($site)

拍拍自己的肩膀,做得好

解释:在步骤b)中,您正在制作子字符串数组。在步骤c)中,您要从数组中选择所需的子字符串并将其放入变量中。剩下的就是蛋糕。

© www.soinside.com 2019 - 2024. All rights reserved.