【问题标题】:ahk - Get text after caracter (space)ahk - 在字符(空格)之后获取文本
【发布时间】:2019-08-28 12:25:02
【问题描述】:

我是 Autohotkeys 的新手。我正在尝试删除每行第一个空格之前的所有文本,以获取其他所有内容。

示例:

txt1=something
txt2=other thing

var.="-1" " " txt1 " " txt2 "`n"
var.="2" " " txt1 " " txt2 "`n"
var.="4" " " txt1 " " txt2 "`n"
;; more add ...

FinalVar:=var
;...
msgbox % FinalVar
RETURN

当前输出:

-1 something other thing
2 something other thing
4 something other thing

我多么希望(FinalVar 的所有行都需要循环):

something other thing
something other thing
something other thing

在 bash 中我可以使用 SED 之类的东西

在 ahk 中是否有快速的方法来做同样的事情?

感谢您的关注。对不起我的英语!

【问题讨论】:

    标签: regex string get autohotkey


    【解决方案1】:

    您可以使用InStr 命令的组合

    InStr()
    从左侧或右侧搜索给定的字符串。
    FoundPos := InStr(Haystack, Needle , CaseSensitive := false, StartingPos := 1, Occurrence := 1)

    SubStr 命令。

    SubStr()
    从字符串中的指定位置检索一个或多个字符。
    NewStr := SubStr(String, StartingPos , Length)

    使用 InStr 可以找到 var 中第一个空格的位置。

    使用 SubStr,您可以像这样提取该位置之后的所有内容到字符串的末尾:

    StartingPos := InStr(var, " ")
    var := SubStr(var, StartingPos + 1)
    

    注意+1,它的存在是因为你需要在空格之后开始提取文本1位置,否则空格将是提取文本中的第一个字符。


    要替换所有行中的前导文本,您可以使用RegExReplace

    RegExReplace()
    替换出现的模式(正则表达式) 在字符串中。

    NewStr := RegExReplace(Haystack, NeedleRegEx , Replacement := "", OutputVarCount := "", Limit := -1, StartingPosition := 1)

    FinalVar := RegExReplace(var, "m`a)^(.*? )?(.*)$", "$2")
    

    m`a)是正则表达式选项,^(.*? )?(.*)$是实际搜索模式。

    m 多行。将 Haystack 视为单个行的集合(如果 它包含换行符)而不是一条连续的线。

    `a:`a 识别任何类型的换行符,即`r、`n、`r`n、 `v/VT/垂直制表符/chr(0xB)、`f/FF/formfeed/chr(0xC) 和 NEL/下一行/chr(0x85)。

    【讨论】:

    • 是否可以在没有循环的情况下同时从最终变量(所有行)中删除这部分(这里有很多行)?
    • 我的印象是你可以控制每一行,如果你只得到最后一个字符串,也许你应该看看RegExMatch
    • 我尝试了 "FoundPos:=RegExMatch(var," ")" 但结果看起来与您之前发布的内容相同(也可以获得第一行的位置)。我如何使用它来获取 FinalVar 的所有行(在 bash 中我将使用 sed)?感谢帮助..
    • 试试这个FinalVar := RegExReplace(var, "ma)^(.*?)?(.*)$", "$2")`
    • 效果很好。但是我必须在 (var, "m`a) 中添加`,因为它在帖子格式中被删除了。谢谢!
    猜你喜欢
    • 2023-03-07
    • 2021-11-25
    • 2018-04-30
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    • 2014-10-18
    • 2018-02-07
    • 1970-01-01
    相关资源
    最近更新 更多