如何从这个字符串中提取数字?

时间:2016-10-23 15:51:28

标签: string autoit

我在Flash网站上使用AutoIt并使用Capture2Text读取其文本。一些If -construct检查是否存在某个按钮。我得到这样的文字:

XXXXX 0,20 XXXXXXX 0,24  Button12 0,21 XXX

X是固定大小的字符。我需要变量中的3个数字。您可以忽略Button12(也是固定大小)。结果应该是:

$Var1 = 0,20
$Var2 = 0,24
$Var3 = 0,21

值介于0,20900,00之间(因此没有固定大小),我需要在没有空格等的情况下获取它。

2 个答案:

答案 0 :(得分:2)

对于给定类型的文本(您的X可以是任何"单词"字符),它的工作原理如下:

$sText = 'XXXXX 0,20 XXXXXXX 0,24 Button12 0,21 XXX'

$aMatch = StringRegExp($sText, '\w+\s(\d+,\d+)\s\w+\s(\d+,\d+)\s\w+\s(\d+,\d+)', 3)
If Not @error Then
    For $i = 0 To UBound($aMatch) -1
        ConsoleWrite('Var ' & $i+1 & ': ' & $aMatch[$i] & @CRLF)
    Next
EndIf

答案 1 :(得分:0)

只是提供另一种选择:

#include <array.au3>
$sText = 'XXXXX 0,20 XXXXXXX 0,24 Button12 0,21 XXX'
$aResult=StringRegExp($sText, " \d{1,3},\d{2} ",3)
_ArrayDisplay($aResult)

提取前面带有1到3位数字的数字,以及用空格括起来的逗号后面的2位数字(根据你的描述,有一些,但如果在模式中省略它们,它也有效)。 “X”字符串的长度并不重要。