Что нового

Как вытащить строки из многострочной переменной?

ZaEzzz

Новичок
Сообщения
28
Репутация
2
Добрый день!
Имеется переменная в которой приличное количество строк.
Пример содержания переменной $out:
-String1wqwe
-String2qwe
+String3qweqwe
String4+qweeqeweweq
String5qweqweqwe
String+6qqweq
Как вытащить из нее строки с подстрокой "+" в массив или хотя бы в файл без временного файла?

Я пока смог осилить только это
Код:
#include <Array.au3>
#include <INet.au3>

$check_string = '+'
$out = StringAddCR(_INetGetSource('http://192.168.1.2/check.php' )) ; Выдает список данных в формате указанном сверху
$result = StringRegExp($out, $check_string, 3)
_ArrayDisplay($result)

Но на выходе подается только массив, который содержит только подстроки совпадения :(
Или хотя бы скажите как осуществить построчное чтение из переменной?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 320
ZaEzzz,
Попробуйте так.
Код:
#include <Array.au3>

$sOut = '-String1wqwe' & @CRLF & '-String2qwe' & @CRLF & '+String3qweqwe' & @CRLF & 'String4+qweeqeweweq' & _
		@CRLF & 'String5qweqweqwe' & @CRLF & 'String+6qqweq'

$aSearch = StringRegExp($sOut, '(?m)^(.*?\+.*?)\r?$', 3)
If @error Then
	MsgBox(16, 'Error', 'No +')
Else
	_ArrayDisplay($aSearch)
EndIf
 
Автор
Z

ZaEzzz

Новичок
Сообщения
28
Репутация
2
madmasles, большое спасибо, великолепно работает!
А в это время пока примерно так накостылял:
Код:
Dim $result[1]

$string = '-String1wqwe' & @CRLF & '-String2qwe' & @CRLF & '+String3qweqwe' & @CRLF & 'String4+qweeqeweweq' & @CRLF & 'String5qweqweqwe' & @CRLF & 'String+6qqweq'
$out = StringSplit($string , @CRLF)
For $i = 1 To $out[0]
	If StringRegExp($out[$i], '+', 0) = 1 Then
		_ArrayAdd ($result, $out[$i])
		$result[0] += 1
	EndIf
Next
_ArrayDisplay($result)



Добавлено:
Сообщение автоматически объединено:

madmasles, кстати, а ваш код не работает, если потребуется искать не один символ в строке, а подстроку.


Добавлено:
Сообщение автоматически объединено:

Прошу прощения, работает - я нечаянно неверные данные послал на вход :smile:
 

gregaz

AutoIT Гуру
Сообщения
1 166
Репутация
299
ZaEzzz [?]
если потребуется искать не один символ в строке, а подстроку.
Вставляй любую подстроку :
Код:
#Include<Array.au3>
	
;$sSearch="+q"	
;$sSearch="String+6qqweq"
$sSearch="+"		

$sText = "-String1wqwe"  & @CRLF & _ 
"-String2qwe"  & @CRLF & _ 
"+String3qweqwe"  & @CRLF & _ 
"String4+qweeqeweweq"  & @CRLF & _ 
"String5qweqweqwe"  & @CRLF & _ 
"String+6qqweq"

$sPatern = "(.*\Q" & $sSearch & "\E.*)\r"
$aResult = StringRegExp( $sText & @CRLF, $sPatern, 3 )
_ArrayDisplay($aResult , ' Test Result ')
 
Верх