Как извлечь числа из этой строки?

#string #autoit

#строка #автоматический запуск

Вопрос:

Я использую 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,20 и 900,00 (поэтому нет фиксированного размера), и мне нужно получить его без пробелов и т.д.

Ответ №1:

Для данного вида текста (ваш X может быть любым символом «word») это работает так:

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

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

Ответ №2:

просто чтобы предложить альтернативу:

 #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»-строк не имеет значения.