Что нового

Прочитать первую строчку из переменной хранящей в себе многострочный текст.

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Помогите, в буфере обмена есть текст, его я загоняю в переменную, из всего текста мне нужно знать что написано в первой строчке, как мне ее засунуть в отдельную переменную? :blink:
 
Автор
Belfigor

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Спасибо, приду домой потестю
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,487
madmasles [?]
А так, мне кажется, лучше
Чем? задача намного проще, зачем ещё какие то массивы с циклами придумывать:

Код:
$sData = ClipGet()

;Метод используя строковые функции
$aFirstLine = StringLeft($sData, StringInStr($sData, @LF, 1, 1)-1)
ConsoleWrite($aFirstLine & @LF)

;Метод используя функции рег. выражения
$aFirstLine = StringRegExpReplace($sData, '\r?\n((?s).*?)$', '')
ConsoleWrite($aFirstLine & @LF)


В данном примере, вариант с рег. выражением, имеет приемущество в случае когда обрабатывается текст содержащий всего одну строчку.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
CreatoR
Абсолютно с Вами согласен в случае, если надо прочитать только первую строку. А если надо найти строку, содержащую, например, определенный текст.
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Или так : ( раз уж я сделал)
Код:
;Запоминаем в буфер  техт :
;111111111111
;222222222222
;333333333333
$sFirstLine=StringRegExpReplace(ClipGet(),'\r?\n[^\r\n]*','')
ConsoleWrite('$sFirstLine = ' & $sFirstLine & @LF)



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

Судя по всему рег.выражение Creator'a будет работать быстрее из-за (?s).


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

А так чуть проще и сохраняется скорость :
Код:
$sFirstLine=StringRegExpReplace(ClipGet(),'(?s)\r?\n.*','')
 
Верх