gpt4 book ai didi

lua - 如何从Lua中的字符串中删除最后一行?

转载 作者:行者123 更新时间:2023-12-04 14:26:36 32 4
gpt4 key购买 nike

我在魔兽世界中使用Lua。
我有这个字符串:

"This\nis\nmy\nlife."
所以打印时,输出是这样的:
This
is
my
life.
如何在新变量中存储除最后一行之外的整个字符串?
所以我希望新变量的输出是这样的:
This
is
my
我想让 Lua 代码找到最后一行(不管字符串中有多少行),删除最后一行并将剩余的行存储在一个新变量中。
谢谢你。

最佳答案

最有效的解决方案是普通的 string.find。

local s = "This\nis\nmy\nlife." -- string with newlines
local s1 = "Thisismylife." -- string without newlines

local function RemoveLastLine(str)
local pos = 0 -- start position
while true do -- loop for searching newlines
local nl = string.find(str, "\n", pos, true) -- find next newline, true indicates we use plain search, this speeds up on LuaJIT.
if not nl then break end -- We didn't find any newline or no newlines left.
pos = nl + 1 -- Save newline position, + 1 is necessary to avoid infinite loop of scanning the same newline, so we search for newlines __after__ this character
end
if pos == 0 then return str end -- If didn't find any newline, return original string

return string.sub(str, 1, pos - 2) -- Return substring from the beginning of the string up to last newline (- 2 returns new string without the last newline itself
end

print(RemoveLastLine(s))
print(RemoveLastLine(s1))
请记住,这仅适用于带有 \n 的字符串-style 换行符,如果你有 \n\r\r\n更简单的解决方案是一种模式。
此解决方案对于 LuaJIT 和长字符串非常有效。
对于小字符串 string.sub(s1, 1, string.find(s1,"\n[^\n]*$") - 1)很好(不是在 LuaJIT 上)。

关于lua - 如何从Lua中的字符串中删除最后一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64844032/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com