作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在魔兽世界中使用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
更简单的解决方案是一种模式。
string.sub(s1, 1, string.find(s1,"\n[^\n]*$") - 1)
很好(不是在 LuaJIT 上)。
关于lua - 如何从Lua中的字符串中删除最后一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64844032/
我是一名优秀的程序员,十分优秀!