如何从外部源发送的字符串中移除 "_"

我正在尝试编写一个代码,当从FIX标签1示例1=AB_123发送一个值时,将删除_,然后将新标签处理为AB123。

以下是更静态的内容,但我希望它更加动态,并且始终删除帐户1中找到的 "_"。

Acct = GetValue(1)

if string.find(Acct, "AB_123")  then
newAcct = AB123
return newAcct
else
return PASS
end
点赞
用户8621712
用户8621712

由于Acct正好是 AB_123,您可以将字符串查找更改为直接比较,使用 ==

要删除 _,只需创建新字符串并返回它。


if Acct == "AB_123" then
    return "AB123"
else
    return PASS -- 我认为PASS是一个变量,如果您想让它成为一个字符串,请使用"PASS"
end
2020-11-27 15:03:20
用户9922866
用户9922866

要从字符串中删除所有给定模式的出现,可以使用string.gsub函数。您可以在这里了解有关它的信息。请注意,这将替换标记中的每个下划线为一个空字符串。

-- 需要:tag_in是一个字符串。
-- 效果:返回去掉下划线('_')的tag_in。
local function get_tag(tag_in)
    -- 将gsub作为字符串类的成员函数调用。
    local tag = tag_in:gsub("_", "")
    return tag
end

string.gsub返回两个值:替换后得到的字符串和输入字符串中给定模式出现的次数。在上述函数中,假设第二个返回值不相关,因此只将第一个值捕获到本地变量并返回。

2020-11-28 00:14:50