Технический форум [Проблема!] string.find
decided96 01.08.2019 в 15:53

Проверенный

Репутация: 102 бал.

Замечания: 0 бал.

Пытаюсь получить из строчки название оружия:

idweapon = guiComboBoxGetItemText(primary_weapon_combox,guiComboBoxGetSelected(primary_weapon_combox))
if string.find(idweapon,"АКС-74У") then
setElementData(getLocalPlayer(),"current_weapon_1","АКС-74У")
end
outputChatBox(getElementData(getLocalPlayer(),"current_weapon_1"))

Так вот, ничего не находит. НО если в
string.find(idweapon,"АКС-74У")

Убрать 74У, и оставить АКС-, то находит АКС- , если отдельно У, находит У.
Дописываю к АКС- 7(семёрку) или любую другую цифру, искать перестаёт.
Кто что посоветует?

А и если отдельно написать поиск 74(как число и как "строку"), то находит 74
Sarrum 01.08.2019 в 18:48

Проверенный

Репутация: 93 бал.

Замечания: 0 бал.

2 варианта:
1) Экранировать символ, добавив перед ним знак процента:
string.find(idweapon, "АКС%-74У")

2) Указать 4-ый аргумент plain для поиска подстроки без паттернов (как есть):
string.find(idweapon, "АКС-74У", 1, true)
decided96 01.08.2019 в 22:06

Проверенный

Репутация: 102 бал.

Замечания: 0 бал.

Sarrum, спасибо попробую.а вообще из-за чего отсеивание затыкается на цифре? Или это как-то связано с тем,что перед 74 - стоит?
Sarrum 05.08.2019 в 14:21

Проверенный

Репутация: 93 бал.

Замечания: 0 бал.

decided96, угу, ибо дефис является магическим символом.
decided96 09.08.2019 в 14:27

Проверенный

Репутация: 102 бал.

Замечания: 0 бал.

Sarrum, ещё раз спасибо помогло - сделал через 4 аргумент. Хотел ещё кое-что посоветовать другим, что по идеи есть вариант использовать нижнее подчёркивание, например: "aks_74y","АКС-74У". Ну, а как сипользовать решать всем Вам.
Войдие или зарегистрируйтесь что бы написать сообщение