1 (изменено: becauseim, 2017-02-20 22:19:01)

Тема: AHK: Если буфер не содержит известных/перечисленных подстрок

Как задать условие, если буфер не содержит известных/перечисленных подстрок? Спасибо!


f1::
IfInString, clipboard, stringone
{
	path = d:\1
	key = -b
}
IfInString, clipboard, stringtwo
{
	path = d:\2
	key = -c
}
; если не содержится ни одно из перечисленных/известных строк
{
	InputBox, key
	InputBox, path 
}
MsgBox % key ", " path
return

2 (изменено: svoboden, 2017-02-20 08:41:34)

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

becauseim,

if clipboard not in строка1,стройка2
if clipboard not contains строка1,стройка2

3

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

svoboden, не правильно.

clipboard = строка1test
IfInString, clipboard, строка1
   msgbox
if clipboard not in строка1,стройка2
   msgbox

4 (изменено: svoboden, 2017-03-11 02:50:18)

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

Malcev, не понимаю, разве нельзя через запятую указать все данные, которые содержатся в буфере обмена?

5

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

По-моему, тут несколько про другое:

clipboard =
(
^строка 1$
строка 2
строка 3
)

Strings =
(
строка 1
строка 2
строка 3a
)

MsgBOx, % "Соответствия " (RegExMatch(clipboard, "Om`a)^(" StrReplace(RegexReplace(Strings, "([\\$#(\)*+.[\]?^{\}|])", "\$1"), "`n", "|") ")$") = 0 ? "не ":"") "обнаружены!"

6 (изменено: svoboden, 2017-03-11 02:52:08)

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

По-моему, пользователь задавший вопрос имел ввиду такое:

f1::
IfInString, clipboard, stringone
{
	path = d:\1
	key = -b
}
IfInString, clipboard, stringtwo
{
	path = d:\2
	key = -c
}
if clipboard not contains stringone,stringtwo
{
	InputBox, key
	InputBox, path 
}
MsgBox % key ", " path
return

7

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

А если не вырезать коммент?:

если не содержится ни одной из перечисленных/известных строк

Код - это попытка реализации.

8

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

svoboden пишет:

Malcev, не понимаю, разве нельзя через запятую указать все данные, что содержатся в буфере обмена?

Можно. Просто в данном случае нужно не "var not in", а "var not contains".

9 (изменено: svoboden, 2017-04-21 02:39:14)

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

Да, я знаю, я просто подумал, ему надо точно слово найти, а не примерно.

10

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

А где в задаче про слова написано? Там речь о строках.

11

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

Flasher, так и в строках тоже работает команда "if clipboard not in stringone,stringtwo".

12

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

Что-то не заметил:

clipboard =
(
stringone
stringtwo
)

if clipboard not in stringone,stringtwo
   msgbox, нет
Else
   msgbox, есть

13

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

Flasher,

clipboard =
(stringone
stringtwo
)

if clipboard not in stringone,stringtwo
   msgbox, нет
Else
   msgbox, есть

14

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

svoboden
Ну, здрасте...

clipboard =
(stringone
stringtwo
)
Msgbox, % clipboard

15 (изменено: svoboden, 2017-02-20 07:39:05)

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

Flasher,

clipboard =
(
stringone
stringtwo
)

if clipboard not in stringone,`nstringtwo
   msgbox, нет
Else
   msgbox, есть

16

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

svoboden
Так и? Результат неверный.

17 (изменено: svoboden, 2017-02-20 07:49:12)

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

Flasher, а так, какой результат?

clipboard =
(
stringone
stringtwo
)

if clipboard not in stringone`nstringtwo
   msgbox, нет
Else
   msgbox, есть

18

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

svoboden
Ну, так в этом нет никакого смысла. Это равносильно сравнению двух строк по знаку равенства.
Строит добавить любой символ, поменять строки местами и т.д., и получим обратный результат.

19 (изменено: svoboden, 2017-02-20 08:13:45)

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

А команда "var not contains"?

20

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

И contains не ищет точные соответствия.
Ладно, я что-то утомился, мне уже давно всё ясно. Подождём лучше уточнений ТС.

21

Re: AHK: Если буфер не содержит известных/перечисленных подстрок


f1::
Send ^{vk43} ; c
ClipWait
If InStr(clipboard, "stringone")
{
	path = d:\1
	key = -b
}
else If InStr(clipboard, "stringtwo")
{
	path = d:\2
	key = -c
}
else
{
	InputBox, key
	InputBox, path 
}
MsgBox % key ", " path
return

Так, кажется, работает. В идеале было бы изобразить более локаничным образом, наверное, при помощи массива.

22

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

becauseim
Уточнений так и не последовало.
Если писали о подстроках, а не строках, то уточните заголовок и ТЗ.

23

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

Flasher, каких именно уточнений? Не понял, как использовать предложенные варианты с простым перечислением строк, без привязанных переменных значений к ним, поэтому, попробовал найти решение на англоязычных ресурсах, и вроде бы, нашел то, что мне подходит. А значения и принципиального отличия подстрок я не понял. В данном случае, я определяю открытый сайт по домену. Иногда это одно слово, иногда несколько, например: forum.script-coding.

24

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

becauseim
Подстрока. Ваш случай. Вот на это и нужно исправить.

25

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

Flasher, исправил. Предложенные примеры подходят именно для строк? Если да, то как на этих примерах сопоставить переменные значения?

26

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

becauseim
Конкретно только мой пример из 5-го поста. Искомые строки перечисляются в переменной Strings. Запись в буфер (clipboard = ...) можно, естественно, удалить. Скрипт сообщает о наличие хотя бы одной строки или об отсутствии всех.

27

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

Flasher, без комментариев, к сожалению, не понятен принцип работы. Например, я копирую (помещаю в буфер) строку "строка 2", после чего вызываю предложенный скрипт. Выходит сообщение о ненайденном соответствии.

28

Re: AHK: Если буфер не содержит известных/перечисленных подстрок

becauseim
Убрал clipboard = ..., всё сработало. Что-то не так делаете. Возможно где-то пробел затесался (браузерный копипаст подвёл или ещё что).
Такое представление устроит?:

Strings =
(
строка 1
строка 2
строка 3a
)

If RegExMatch(clipboard, "Om`a)^(" StrReplace(RegexReplace(Strings, "([\\$#(\)*+.[\]?^{\}|])", "\$1"), "`n", "|") ")$")
  MsgBox, Соответствия обнаружены!
Else
  MsgBox, Соответствия не обнаружены!