Что нового

Копирование в буфер обмена случайные предложения

rendo880

Новичок
Сообщения
4
Репутация
0
Всем привет!

У меня возникла потребность научить скрипт копировать из текста случайное количество предложений в буфер бмена.

Например:

Текст в файле *.txt:

Красное яблоко. Лиса украла колобок. Медведь идет.

Мне нужно что бы было скопировано случайное количество предложений по порядку- например:

Красное яблоко. Лиса украла колобок.

или

Лиса украла колобок. Медведь идет.

или

Красное яблоко. Лиса украла колобок. Медведь идет.

Красное яблоко.Медведь идет. - Такой вариант не подходит

Подскажите пожалуйста.
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
$file=FileRead(@ScriptDir&'\123.txt')
$str=StringRegExp($file,'[A-ZА-Я][^\.]+\.',3)
$zz=''
For $i = 0 To Random(0,UBound($str)-1 ,1)
	$zz&=$str[$i]
Next
ClipPut($zz)
 
Автор
R

rendo880

Новичок
Сообщения
4
Репутация
0
Код:
$file=FileRead(@ScriptDir&'\123.txt')
$str=StringRegExp($file,'[A-ZА-Я][^\.]+\.',3)
$zz=''
For $i = 0 To Random(0,UBound($str)-1 ,1)
    $zz&=$str[$i]
Next
ClipPut($zz)
Спасибо!
Сообщение автоматически объединено:

Код:
$file=FileRead(@ScriptDir&'\123.txt')
$str=StringRegExp($file,'[A-ZА-Я][^\.]+\.',3)
$zz=''
For $i = 0 To Random(0,UBound($str)-1 ,1)
    $zz&=$str[$i]
Next
ClipPut($zz)

А не подскажите мне для справки - как копировать одно случайное предложение ?
И на всякий случай одно случайное слово. (Что бы я все варианты имел)

Cпасибо.
 
Последнее редактирование:

xXx

╚{■_■}╗
Меценат
Сообщения
248
Репутация
95
Еще вариант:
Код:
$sStr = FileRead(@ScriptDir & '\Test.txt')

StringRegExpReplace($sStr, '[.?!](\s+[^a-zа-яё]|$)', '')
$iSentence = @extended
$iNumMin = Random(0, $iSentence - 1, 1)
$iNum = Random($iNumMin, $iSentence, 1) - $iNumMin
If Not $iNum Then $iNum = 1
$sStr = StringRegExpReplace($sStr, '(?s)(?:(.+?[.?!]\s+(?=[^a-zа-яё])){' & _
        $iNumMin & '})((.+?[.?!](\s+(?=[^a-zа-яё])|$)){' & $iNum & '}).*', '\2')

;~ConsoleWrite('+[$iNumMin = ' & $iNumMin & ', $iNum = ' & $iNum & ']' & @LF & $sStr & @LF) ; <<<<< П Р О В Е Р К А >>>>
ClipPut($sStr)

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

А не подскажите мне для справки - как копировать одно случайное предложение ?
Код:
; Замените строку:
; $iNum = Random($iNumMin, $iSentence, 1) - $iNumMin
; На:
$iNum = 1
 
Автор
R

rendo880

Новичок
Сообщения
4
Репутация
0
Еще вариант:
Код:
$sStr = FileRead(@ScriptDir & '\Test.txt')

StringRegExpReplace($sStr, '[.?!](\s+[^a-zа-яё]|$)', '')
$iSentence = @extended
$iNumMin = Random(0, $iSentence - 1, 1)
$iNum = Random($iNumMin, $iSentence, 1) - $iNumMin
If Not $iNum Then $iNum = 1
$sStr = StringRegExpReplace($sStr, '(?s)(?:(.+?[.?!]\s+(?=[^a-zа-яё])){' & _
        $iNumMin & '})((.+?[.?!](\s+(?=[^a-zа-яё])|$)){' & $iNum & '}).*', '\2')

;~ConsoleWrite('+[$iNumMin = ' & $iNumMin & ', $iNum = ' & $iNum & ']' & @LF & $sStr & @LF) ; <<<<< П Р О В Е Р К А >>>>
ClipPut($sStr)

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


Код:
; Замените строку:
; $iNum = Random($iNumMin, $iSentence, 1) - $iNumMin
; На:
$iNum = 1


Здорово! Вынимает по одному предложению. Спасибо

А по одному слову или по словосочетанию из 3-4 слов возможно вынимать?
 

JOKER-2013

Новичок
Сообщения
4
Репутация
0
Вечер добрый, подскажите пожалуйста, а как исключить копирования комментария? Чтоб комментраний не копировал?
 
Верх