dialog + table.insert

biscuitt

Известный
Автор темы
185
14
Версия MoonLoader
.026-beta
В диалоге имею следующий текст:
dialog:
{ffffff}Ваши автомобили:
{AFAFAF}FBI Rancher [{ffffff}A777YE{AFAFAF} ] (453) {cccccc}(открыт)
{AFAFAF}Patriot [{ffffff}LP 3922{AFAFAF} ] (456) {cccccc}(открыт)
{AFAFAF}Banshee [{ffffff}LP 9111{AFAFAF} ] (458) {cccccc}(открыт)
{AFAFAF}Stretch [{ffffff}FC 9998{AFAFAF} ] (463) {cccccc}(открыт)
{AFAFAF}Mercedes GT63 [{ff0000}T 2354{AFAFAF} ] (469) {cccccc}(открыт)
{AFAFAF}Mercedes-Benz AMG GT [{ff0000}T 4641{AFAFAF} ] (470) {cccccc}(открыт)
{AFAFAF}UAZ Patriot [{ffffff}LP 7255{AFAFAF} ] (472) {cccccc}(открыт)
вношу из него в таблицу наименования авто и ID:
table.insert:
table.insert(cars, {text:match('{AFAFAF}(.+)%[%{.+%}.+%{.+%} %] %((%d+)%)')})
отображаю в окне, но на выходе получаю следующую картину:
1675215781470.png


однако, имея лишь ОДИН автомобиль в диалоге, всё работает и отображается должным образом:
1675215826587.png


в чем заключается проблема?
 
Решение
в чем заключается проблема?
в кривой регулярке и непонимании как они работают
'{AFAFAF}(.+)%[%{.+%}.+%{.+%} %] %((%d+)%)'
захватит не "FBI Rancher", а вот это:
1675224611857.png

хочешь чтобы захватывало только FBI Rancher или другие названия? используя gmatch парси текст построчно и работай с каждой отдельно
Lua:
for line in dialogText:gmatch('[^\r\n]+') do
    line = line:gsub('{......}', '')
    local vehicleName, vehicleId = line:match('(.+) %[.-%] %((%d+)%)')
    if vehicleName ~= nil then
        table.insert(cars, {vehicleId, vehicleName})
    end
end
1675225297348.png

kyrtion

Известный
649
238
В диалоге имею следующий текст:
dialog:
{ffffff}Ваши автомобили:
{AFAFAF}FBI Rancher [{ffffff}A777YE{AFAFAF} ] (453) {cccccc}(открыт)
{AFAFAF}Patriot [{ffffff}LP 3922{AFAFAF} ] (456) {cccccc}(открыт)
{AFAFAF}Banshee [{ffffff}LP 9111{AFAFAF} ] (458) {cccccc}(открыт)
{AFAFAF}Stretch [{ffffff}FC 9998{AFAFAF} ] (463) {cccccc}(открыт)
{AFAFAF}Mercedes GT63 [{ff0000}T 2354{AFAFAF} ] (469) {cccccc}(открыт)
{AFAFAF}Mercedes-Benz AMG GT [{ff0000}T 4641{AFAFAF} ] (470) {cccccc}(открыт)
{AFAFAF}UAZ Patriot [{ffffff}LP 7255{AFAFAF} ] (472) {cccccc}(открыт)
вношу из него в таблицу наименования авто и ID:
table.insert:
table.insert(cars, {text:match('{AFAFAF}(.+)%[%{.+%}.+%{.+%} %] %((%d+)%)')})
отображаю в окне, но на выходе получаю следующую картину:
Посмотреть вложение 188115

однако, имея лишь ОДИН автомобиль в диалоге, всё работает и отображается должным образом:
Посмотреть вложение 188116

в чем заключается проблема?
Возможно ты пропустил проматчить hex-цвета.
table.insert:
table.insert(cars, {text:match('%{.+%}(.+)%[%{.+%}.+%{.+%} %] %((%d+)%)')})
Но возвращает 2 значение, лучше указывать новые переменные значение и проматчить, а затем вносить в таблице, иначе возможно вернет без типа значение и будет ошибаться, что это модель или номер машинки.

Я напишу подробнее, если ты не понял сверху мини-код.
Lua:
textDialog = '{AFAFAF}FBI Rancher [{ffffff}A777YE{AFAFAF} ] (453) {cccccc}(открыт)'
A, B, C, D, E, F, G, H  = textDialog:match('%{(.+)%}(.+) %[%{(.+)%}(.+)%{(.+)%} %] %((%d+)%) %{(.+)%}%((.+)%)')
print(textDialog)
print('A: '..A, '\nB: '..B, '\nC: '..C, '\nD: '..D, '\nE: '..E, '\nF: '..F, '\nG: '..G, '\nH: '..H)

Output Lua Compiler:
{AFAFAF}FBI Rancher [{ffffff}A777YE{AFAFAF} ] (453) {cccccc}(открыт)
A: AFAFAF   
B: FBI Rancher   
C: ffffff   
D: A777YE   
E: AFAFAF   
F: 453   
G: cccccc   
H: открыт
 
  • Нравится
Реакции: biscuitt

paulohardy

вы еще постите говно? тогда я иду к вам
Всефорумный модератор
1,891
1,254
в чем заключается проблема?
в кривой регулярке и непонимании как они работают
'{AFAFAF}(.+)%[%{.+%}.+%{.+%} %] %((%d+)%)'
захватит не "FBI Rancher", а вот это:
1675224611857.png

хочешь чтобы захватывало только FBI Rancher или другие названия? используя gmatch парси текст построчно и работай с каждой отдельно
Lua:
for line in dialogText:gmatch('[^\r\n]+') do
    line = line:gsub('{......}', '')
    local vehicleName, vehicleId = line:match('(.+) %[.-%] %((%d+)%)')
    if vehicleName ~= nil then
        table.insert(cars, {vehicleId, vehicleName})
    end
end
1675225297348.png
 
  • Нравится
Реакции: YarikVL, biscuitt и qdIbp