1

Тема: AHK: Случайное предложение из текста

Дабы понять возможности AHK хочу узнать: возможен ли скрипт, который копирует в буфер обмена (или присваивает значение переменной) случайное предложение из текста с какого-нибудь сайта или случайное предложение из заранее вписанного в скрипт текста?

2

Re: AHK: Случайное предложение из текста

Да возможен.

Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

3

Re: AHK: Случайное предложение из текста

Можете привести пример, если это не трудно?

4

Re: AHK: Случайное предложение из текста

str =
(
Документация по программе AutoHotkey
Введение
Общий обзор программы и краткое обучение 
Туториал - Запуск программы или документа (продолжение)  
Часто задаваемые вопросы (FAQ)
Горячие клавиши для мыши, джойстика и клавиатуры 
Создание клавиатурной макрокоманды или макрокоманды мыши
Потоки
Замещение и блокировка горячих клавиш
Строки автозамены
Переназначение клавиш и кнопок мыши
Список клавиш и кнопок мыши/джойстика
Скрипты
Переменные и выражения
)
oRow := StrSplit(str, "`n")
Loop  {
    Random, r, 1, oRow.MaxIndex()
    MsgBox % oRow[r]
}

Со строками очень просто. Но вот каким признакам разбивать гарантированно разбивать текст на предложения, я не знаю.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5

Re: AHK: Случайное предложение из текста

От точки до точки - предложения. Но как определить первое это надо думать.

Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

6

Re: AHK: Случайное предложение из текста

А что, предложения оканчиваются только точками?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7 (изменено: Stukk, 2015-04-11 22:43:26)

Re: AHK: Случайное предложение из текста

Спасибо большое за пример. Можно ли выделять предложения по принципу "от точки до точки"? То есть в буфер, например, вставляются все символы от какой-то рандомной точки до первой встретившейся?

8 (изменено: Alectric, 2015-04-11 22:45:27)

Re: AHK: Случайное предложение из текста

Действительно. Тогда "regex  [.!?]".

П.с. не могу написать корректный код с телефона, извините.

Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

9

Re: AHK: Случайное предложение из текста

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

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

10

Re: AHK: Случайное предложение из текста

Смотря какой исходный текст. В литературных произведениях точки в основном в конце предложений.

11

Re: AHK: Случайное предложение из текста

А можете подробнее рассказать о команде "regex"?

12 (изменено: Alectric, 2015-04-12 08:17:09)

Re: AHK: Случайное предложение из текста

Про "regex" сам еще не до конца понимаю. Каждый раз вчитываюсь в справку. Про "RegExMatch" и "RegExReplace" читай в английской справке.

Вот "костыльный" вариант, как смог - так и написал:

str=
(
.
Ла лала ла л ал. Лаалала лал лалала?
Бу буб убббубуб ббу! Лалал бу, блал бла.
)

while (str!="")
{
  Pos:=RegExMatch(str,"(.*[\.\?!\R])(.*[\.\?!\R])",var)
  if !pos
    break
  arr%a_index%:=regexreplace(var2,"\R")
  str:=var1
  count:=a_index
;  tooltip,% var1 "`n`n" var2 "`n" Pos
}


loop,% count
  msgbox,% arr%a_index%



Random,N,1,%count%
msgbox,% "Случайное:`n" N "/" count "`n`n" arr%N%

Присутствует два "бага": это точка в начале и обратная последовательность предложений.

Что касается сокращений в тексте: нужно составлять список сокращений и заменять в них точки на "спецсимволы", затем восстанавливать в точки.

Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

13

Re: AHK: Случайное предложение из текста

Так наверное можно:

text=
(
Спасибо большое за пример. Можно ли выделять предложения по принципу "от точки до точки"? То есть в буфер, например, вставляются все символы от какой-то рандомной точки до первой встретившейся?
)
Pos := 1
While Pos := RegExMatch(text,"[""\(А-ЯA-Z0-9].*?[\.\?\!]+",sentence,Pos+StrLen(sentence))
   MsgBox % sentence

14

Re: AHK: Случайное предложение из текста

Alectric пишет:

Про "RegExMatch" и "RegExReplace" читай в английской справке.

Они и в переводе есть.

15

Re: AHK: Случайное предложение из текста

Malcev пишет:

Так наверное можно

Да, так получается, только вот предложения не в рандомном порядке

16

Re: AHK: Случайное предложение из текста

Поменять

   MsgBox % sentence

на

sentences .= sentence "`n"

И потом использовать команду Sort либо Random.