Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String Lua字符串串联_String_Lua_String Concatenation - Fatal编程技术网

String Lua字符串串联

String Lua字符串串联,string,lua,string-concatenation,String,Lua,String Concatenation,我正在研究Lua,我有这种代码 MapMessage(Process["ks.MSH"][1], MsgIn, mg) MapEvent(Process["ks.EVN"][1], MsgIn, mg) MapPatient(Process["ks.PID"][1], MsgIn, mg) MapVisit(Process["ks.PV1"][1],MsgIn,mg) 在上述语句中,MapMessage、MapEvent、MapPatient、MapVisit是函数,ks.MSH、ks.EVN

我正在研究Lua,我有这种代码

MapMessage(Process["ks.MSH"][1], MsgIn, mg)
MapEvent(Process["ks.EVN"][1], MsgIn, mg)
MapPatient(Process["ks.PID"][1], MsgIn, mg)
MapVisit(Process["ks.PV1"][1],MsgIn,mg)
在上述语句中,MapMessage、MapEvent、MapPatient、MapVisit是函数,ks.MSH、ks.EVN、ks.PID、ks.PV1是数据库中的表。 现在,我想使用lua中提供的gmatch函数自动化这个过程的一部分,到目前为止我已经完成了

for u in string.gmatch(S, "([^,%s]+)"), 1 do
     l[k] = u 
    _G["Map"..l[k]](Process["ks[l[k]]"][1], R[1])
     k=k+1
   end 

但是上面代码第三行中的连接部分并没有真正使其成为ks.MSH、ks.PID、ks.PV1 e.t.c,因此请建议需要在那里放置什么来代替
(进程[“ks[l[k]]”[1]
,以获取s.MSH、ks.PID、ks.PV1 e.t.c

,因为您的字符串包含
“MSH、PID、PV1、EVN”
,您必须使用哈希表或查找表。程序如下所示:

S = "MSH, PID, PV1, EVN"
tLookup = {
    MSH = "Message",
    EVN = "Event",
    PID = "Patient",
    PV1 = "Visit",
}

for u in S:gmatch "([^,%s]+)" do
    sNameOfFunction = tLoopup[u]
    _G[ "Map"..sNameOfFunction ] ( Process["ks."..u][1], MsgIn, mg )
     k=k+1
end
S = "MSH, PID, PV1, EVN"
tLookup = {
    MSH = _G.MapMessage,
    EVN = _G.MapEvent,
    PID = _G.MapPatient,
    PV1 = _G.MapVisit,
}

for u in S:gmatch "([^,%s]+)" do
    tLoopup[u] ( Process["ks."..u][1], MsgIn, mg )
    k = k+1
end

甚至像这样:

S = "MSH, PID, PV1, EVN"
tLookup = {
    MSH = "Message",
    EVN = "Event",
    PID = "Patient",
    PV1 = "Visit",
}

for u in S:gmatch "([^,%s]+)" do
    sNameOfFunction = tLoopup[u]
    _G[ "Map"..sNameOfFunction ] ( Process["ks."..u][1], MsgIn, mg )
     k=k+1
end
S = "MSH, PID, PV1, EVN"
tLookup = {
    MSH = _G.MapMessage,
    EVN = _G.MapEvent,
    PID = _G.MapPatient,
    PV1 = _G.MapVisit,
}

for u in S:gmatch "([^,%s]+)" do
    tLoopup[u] ( Process["ks."..u][1], MsgIn, mg )
    k = k+1
end

以下是最终奏效的方法,谢谢Egor和hjpotter92:)


\u G[“Map”.l[k]](Process[ks[l[k]][1],R[1])
@Egor,没有,因为我也有双引号,它不起作用,请仔细看看,(Process[“ks.PV1”][1],MsgIn,mg),这正是我需要的。你能展示一下
s
中的内容吗?@hjpotter92:s中,我有“MSH,PID,PV1,EVN”e.t.c,取决于事件,有时候我有所有这4个,其余时间任何3或2个库hjpotter92:顺便说一句,这段代码在我身上起作用了,我想只要你提出关于S的建议就行了。下面是起作用的代码:ks={MSH=“ks.MSH”,EVN=“ks.EVN”,PID=“ks.PID”,PV1=“ks.PV1”,PV2=“ks.PV2”}S=tostring(R[1]。AllSegmentsList)l={}k=1表示字符串中的u。gmatch(S,([^,%S]+))do l[k]=u_G[“映射”。.l[k]](进程[ks[l[k]]][1],MsgIn,mg)k=k+1@Simrankaur你可以将答案标记为选择/答案,问题将出现在问题列表中。考虑投票(甚至接受)一个已经证明有用的答案。