Autohotkey 以空格作为分隔符分析数值,同时忽略数字分组(即1 020 vs 1020)
这里需要一些想法。 我有一个看起来像“542.12 18.02 1 020.00 2.34”的字符串,我想将其解析为单独的变量(以_空格作为分隔符)。问题是1020.00的值写在表格1020.00上,所以我得到了变量1和020.00。 我不能想出任何关于RegExReplace的东西,因为从文档中可以理解,我必须替换整个Regex。否则我可以使用“\d+(replaceOnlyThiss space)”,因为“真实”值中总是有一个点。我希望这可以在RegExReplace中以某种方式完成,但我找不到任何东西表明它可以。我现在真的让它工作了,但很混乱:Autohotkey 以空格作为分隔符分析数值,同时忽略数字分组(即1 020 vs 1020),autohotkey,Autohotkey,这里需要一些想法。 我有一个看起来像“542.12 18.02 1 020.00 2.34”的字符串,我想将其解析为单独的变量(以_空格作为分隔符)。问题是1020.00的值写在表格1020.00上,所以我得到了变量1和020.00。 我不能想出任何关于RegExReplace的东西,因为从文档中可以理解,我必须替换整个Regex。否则我可以使用“\d+(replaceOnlyThiss space)”,因为“真实”值中总是有一个点。我希望这可以在RegExReplace中以某种方式完成,但我找
nrofvaluesover1000 := 0
Loop , Parse , var, %A_Space%
{
if A_LoopField is Integer
{
nrofvaluesover1000++
thousands := A_LoopField
continue
}
nr := A_Index - nrofvaluesover1000
If (nr = nrofthewantedvalue)
{
if thousands is not space
{
MyValue := A_LoopField + 1000 * thousands
thousands := ""
}
else
MyValue := A_LoopField
MsgBox '%MyValue%'
break
}
else
thousands := ""
}
肯定有更简洁的方法做同样的事情吗?这将解析包含1)零个或多个嵌入空格和2)一个小数点的数字:
haystack := "1.1 200.2 3 000.3 400 000.4 5 000 000.5"
pos := 1
while (pos := RegExMatch(haystack, "[\d ]+\.\d+", match, pos)) {
pos += strlen(match)
MsgBox % strreplace(match, " ")
}