У меня есть следующие строки данных, которые я получаю в качестве входных данных:Lua - проверка дубликатов данных в строке
"route1,1234,1,no~,,route2,1234,1,no~,"
Он представляет собой две «записи» данных ... где каждая запись имеет 4 поля. Я создал код для синтаксического анализа этой строки в отдельные столбцы/поля. Но часть, которая не работает, проверяет, есть ли у меня какие-либо дубликаты в поле 2. Поле 2 является тем, которое в настоящее время имеет значение «1234».
Вот код:
function string:split(delimiter)
local result = { }
local from = 1
local delim_from, delim_to = string.find(self, delimiter, from)
while delim_from do
table.insert(result, string.sub(self, from , delim_from-1))
from = delim_to + 1
delim_from, delim_to = string.find(self, delimiter, from)
end
table.insert(result, string.sub(self, from))
return result
end
local check_for_duplicate_entries = function(route_data)
local route
local route_detail = {}
local result =true
local errtxt
local duplicate = false
print("received :" ..route_data)
route = string.gsub(route_data, "~,,", "~")
route = route:sub(1,string.len(route)-2)
print("route :" ..route)
-- break up in to an array
route = string.split(route,"~")
for key, value in pairs(route) do
route_detail[key] = string.split(value,",")
end
local list_of_second_column_only = {}
for key,value in pairs(route_detail) do
local temp = value[2]
print(temp .. " - is the value I'm checking for")
if list_of_second_column_only[temp] == nil then
print("i dont think it exists")
list_of_second_column_only[key] = value[2]
print(list_of_second_column_only[key])
else
--found a duplicate.
return true
end
end
return false
end
print(check_for_duplicate_entries("route1,1234,1,no~,,route2,1234,1,no~,"))
Я думаю, где я буду неправильно это испытание:
if list_of_second_column_only[temp] == nil then
Я думаю, что я проверяю для ключа с температурой значения вместо значения со значением, которое содержит temp. Но я не знаю, как исправить синтаксис. Кроме того, мне интересно, есть ли более эффективный способ сделать это. Число «записей», которые я получаю в качестве входных данных, является динамическим/неизвестным, равно как и значение второго столбца в каждой записи.
Спасибо.
EDIT 1
Сообщение Я пытался использовать в качестве ссылки: Search for an item in a Lua list
В ответ, они показывают, как проверить записи в таблице по значению, а не зацикливание через весь стол ...
if items["orange"] then
-- do something
end
Я играл вокруг, чтобы попытаться сделать что-то подобное ...
Эй, Алекс. Это отлично работает. Благодаря! – dot