Форум программистов, компьютерный форум, киберфорум
Lua
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/30: Рейтинг темы: голосов - 30, средняя оценка - 4.93
-18 / 3 / 0
Регистрация: 12.01.2014
Сообщений: 210

Парсинг строки такого вида и проверки в каждой строке слов "1=GO=100=300,2=RUN=100=200"

25.03.2019, 14:38. Показов 6241. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача сплитить каждое слово в строке на этом языке никак не получается даже по дукументации помогите пожалуйста

Есть строка запятая отделяет колиство строк их тоже надо посчитать


"1=GO=100=300,2=RUN=100=200"


На VB 6 Это делает очень легко вот так помогите сделать тоже самое только на LUA замучался уже даже по дументация не получается какой то он очень помещанный на циклах что ничего не получается

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
'Сплитим количество символов , у нас их 1
'С помощью UBound(s) показываем сколько их всего переменная s хранить количество строк
s = Split(Text1.Text, ",")
'UBound(s) - Количество строк
'Теперь зная сколько строк в строке надо перебрать каждую и сплитить в каждой строке уже символы =
 
'Считаем от 0 Потому что в vb 6 отсчет начинается с нуля до количетсва символов в итоге как раз получается два символа начиная с нуля в строке у нас UBound будет 1 потому что запятая одна
For i = 0 To UBound(s) '
'Теперь сплитим равно в каждой строке на VB 6 Это делается легко так
h = Split(s(i), "=")
 
'Теперь он в цикле будет показывается каждое слово и в каждой строке которая была заспличена через знак равно которую сплитит через запятую как сделть такое же на lua помогите пожалуйста замучался уже даже по документации не получается
'h(0) - Первые данные Будет показано    1
'h(1) - Вторые данные Будет показано    RUN
'h(3) - Третьи данные будет показано    100
'h(4) - Четвертые данные будет показано 200
'И потом он просто дальше идет по строке и показывает остальные данные пока не закончится строчка
 
MsgBox h(0)
MsgBox h(1)
MsgBox h(2)
MsgBox h(3)
 
Next i
На
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.03.2019, 14:38
Ответы с готовыми решениями:

Есть 3 списка l1 = [1,2,3,…,9], l2 = [10,20,30,…,90], l3 = [100,200,300,…,900]
Составить из них новый список l = .

Напечатать таблицу стоимости 100, 200, 300, ., 2000 г конфет
Напечатать таблицу стоимости 100, 200, 300, ..., 2000 г конфет(стоимость 1 кг конфет вводится с клавиатуры). Добавлено через 18 минут ...

Ввести матрицу размерностью 5x5, состоящую их целых чисел в промежутке от —100 до +100. В каждой строке поменять местами наибольший и наименьший элеме
Ввести матрицу размерностью 5x5, состоящую их целых чисел в промежутке от —100 до +100. В каждой строке поменять местами наибольший и...

9
 Аватар для vantfiles
1018 / 1914 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
25.03.2019, 18:53
Лучший ответ Сообщение было отмечено Rad0n как решение

Решение

Lua
1
2
3
4
5
6
7
8
9
10
local str = "1=GO=100=300,2=RUN=100=200"
 
local n = 0
 
for v1, v2, v3, v4 in string.gmatch( str, "(%w+)=(%w+)=(%w+)=(%w+)" ) do
    print( v1, v2, v3, v4 )
    n = n + 1
end
 
print( "Count = " .. n )
1
-18 / 3 / 0
Регистрация: 12.01.2014
Сообщений: 210
25.03.2019, 19:15  [ТС]
vantfiles, большое спасибо! Я не пойму как он работает смотри ты вот сплитил только равно в коде str, "(%w+)=(%w+)=(%w+)=(%w+)" а как определяет что надо еще сплитить запятую ?
0
 Аватар для vantfiles
1018 / 1914 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
25.03.2019, 19:21
А никак, разделитель вообще может быть любым, за исключением знака равно.

(%w+) ловит любое к-во символов латиницы и цифр, весь паттерн ловит четыре такие группы со знаками равно между ними.
0
-18 / 3 / 0
Регистрация: 12.01.2014
Сообщений: 210
25.03.2019, 23:51  [ТС]
vantfiles, Слушай есть проблема как исправить когда пишу число с точкой "100.300"то он выводит только 100 а не все число 100.300

Lua
1
2
3
4
5
6
7
8
local str = "1=GO=100.300=300,2=RUN=100=200"
 
local n = 0
 
for v1, v2, v3, v4 in string.gmatch( str, "(%w+)=(%w+)=(%w+)=(%w+)" ) do
    print(v3)
 
end
0
 Аватар для vantfiles
1018 / 1914 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
26.03.2019, 16:53
Лучший ответ Сообщение было отмечено Rad0n как решение

Решение

Lua
1
2
3
4
5
6
7
8
9
10
local str = "1=GO=100.123=300,2=RUN=100.465=200.789"
 
local n = 0
 
for v1, v2, v3, v4 in string.gmatch( str, "(%w*%.*%w*)=(%w*%.*%w*)=(%w*%.*%w*)=(%w*%.*%w*)" ) do
    print( v1, v2, v3, v4 )
    n = n + 1
end
 
print( "Count = " .. n )
1
-18 / 3 / 0
Регистрация: 12.01.2014
Сообщений: 210
26.03.2019, 22:21  [ТС]
vantfiles, Большое спасибо тебе! А это же по сути цикл ? обязательно надо писать v1 v2 v3 v4
я думал будет как в VB 6 тимо n(0)
n(1)
n(2)
n(3)
а тут чет без индекса в чем разница от split
от
string = "cat,dog"
one, two = string.split(",")
без цикла таким способом как я понял реализовать такое нереально по моей строке ?
0
 Аватар для vantfiles
1018 / 1914 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
26.03.2019, 22:43
Лучший ответ Сообщение было отмечено Rad0n как решение

Решение

Я не знаю VB 8)
В том бейсике, что я помню, ф-ция не может возвращать несколько значений.
Цикл - да, принципиально, это одна из форм циклов в Луа - цикл с итератором.
Вместо v1 v2 v3 v4 можно написать любые переменные, но нужно помнить - они локальны относительно цикла - вне его их считай что нет.
1
-18 / 3 / 0
Регистрация: 12.01.2014
Сообщений: 210
27.03.2019, 03:16  [ТС]
vantfiles,
Теперь со знаком минус не печается пытаюсь пытаюсь понять как сплитить вроде параметр %d отвечает за минус ток не пойму синтакс (

Lua
1
2
3
4
5
6
7
8
9
local str = "1=GO=-100.123=300,2=RUN=-100.465=200.789"
 
local n = 0
 
for v1, v2, v3, v4 in string.gmatch( str, "(%w*%.*%w*)=(%w*%.*%w*)=(%w*%.*%w*)=(%w*%.*%w*)" ) do
    print(v3)
    n = n + 1
end
print( "Count = " .. n )
0
 Аватар для vantfiles
1018 / 1914 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
27.03.2019, 12:09
Lua
1
2
3
4
5
local str = "1=GO=+100.123=-300,2=RUN=100.465=-200.789"
 
for v1, v2, v3, v4 in string.gmatch( str, "([%+%-]*%w*%.*%w*)=([%+%-]*%w*%.*%w*)=([%+%-]*%w*%.*%w*)=([%+%-]*%w*%.*%w*)" ) do
    print( v1, v2, v3, v4 )
end
Добавлено через 5 минут
%d - десятичная цифра, знак сюда не входит
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.03.2019, 12:09
Помогаю со студенческими работами здесь

Как сгенерировать 200 случайных чисел без повторов в интервале 100-300
Нужно сделать так, чтобы сгенерировалось заданное число чисел, например, 200. При этом они не должны быть меньше некоторого установленного...

С клавиатуры ввести стоимость одного кг конфет. Напечатать таблицу стоимости 100, 200, 300, ., 2000 г конфе
С клавиатуры ввести стоимость одного кг конфет. Напечатать таблицу стоимости 100, 200, 300, ..., 2000 г конфет. Кому не сложно...

Выражение (100 / 300) * 100 выдает ноль
Почему? В переменную какого бы типа я не указал это выражение, получившееся значение всегда равно нулю!

Дано число c – стоимость 1 кг яблок Выведите стоимости 100 г, 200 г, 300 г, …, 3 кг яблок
1)Дано число c – стоимость 1 кг яблок. Выведите стоимости 100 г, 200 г, 300 г, …, 3 кг яблок.

Нужно купить 20 книжек на 1800 рублей по 100 ,200 ,300 рублей, как это сделать
Нужно купить 20 книжек на 1800 рублей по 100, 200, 300 рублей. Как это сделать


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru