1

Тема: AHK: Поиск строки в списке

out = 192.168.1.1

list =
(
192.168.1.12
192.168.1.13
192.168.1.14
еще 5000 строк
)

Как можно узнать, есть ли уже такая строка (out) в списке (list)?

2 (изменено: Phoenixxx_Czar, 2021-12-17 22:51:46)

Re: AHK: Поиск строки в списке

С помощью 'strSplit(list, "`n")' делаем из строки - массив.
С помощью 'hasVal(arr, value)' проверяем, есть ли указанное значение (value) в массиве (arr). В нашем случае есть ли в массиве listArr, значение из переменной out1 и out2.

out1 = 192.168.1.1
out2 = 192.168.1.14

list =
(
192.168.1.12
192.168.1.13
192.168.1.14
еще 5000 строк
)

; listArr := strSplit(list, "`n")
listArr := StrSplit(list, "`n", "`r")

msgbox, % out1 (hasVal(listArr, out1) ? "" : " не") " находится в списке"
msgbox, % out2 (hasVal(listArr, out2) ? "" : " не") " находится в списке"


hasVal(haystack, needle)
{
    for index, value in haystack
        if (value == needle)
            return index
    return 0
}
Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

3

Re: AHK: Поиск строки в списке

Phoenixxx_Czar Все работает так как надо, строку находит. Больше суток не мог решить эту задачу (самостоятельно). Спасибо Вам большое!

4

Re: AHK: Поиск строки в списке

Phoenixxx_Czar Еще возник небольшой вопросик, можно ли узнать количество элементов в массиве listArr?

5

Re: AHK: Поиск строки в списке

И почему то не ищет, если в переменную list добавить строки из файла через FileRead

6

Re: AHK: Поиск строки в списке

Phoenixxx_Czar пишет:
listArr := strSplit(list, "`n")

Лучше так:

listArr := StrSplit(list, "`n", "`r")
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: Поиск строки в списке

Alex45 пишет:

Phoenixxx_Czar Еще возник небольшой вопросик, можно ли узнать количество элементов в массиве listArr?

Ну нужно же хоть немного справку открывать .

list =
(
192.168.1.12
192.168.1.13
192.168.1.14
еще 5000 строк
)

listArr := strSplit(list, "`n", "`r")

msgbox, % listArr.maxIndex()

И согласен с комментарием выше, это должно решить проблему с fileRead.

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)