我目前正在Lua为computerCraft编程概念证明文本编辑器;一种功能是行计数。如何计算字符串中的行数,或者至少计算换行符? 理想情况下,显示器/终端的侧面也应该有行号,它可以使用相同的代码。
我找不到足够好的搜索结果,如果已经回答了一个链接,我将不胜感激。
我不知道该怎么做,理想的结果是将所有文本行分隔为不同条目的数组;这将解决两个问题;但可能会有更多的“定制”选项
希望我能在这样的帮助下实现输出...
1 |while true do
2 |sleep(0)
3 |write("Example")
4 |write("Script\n\n")
5 |end
:
PPPe Code Editor ~ 5 lines
...当事物发生变化时刷新
答案 0 :(得分:0)
以字符串开头:
local str = "One sentence.\nAnother sentence.\nThe end."
然后:
local lines = {}
for line in (str):gmatch("[%a+%s]+") do
table.insert(lines, line)
end
for i, line in ipairs(lines) do
print("Line " .. i .. ": " .. line)
end
这将打印:
Line 1: One sentence.
Line 2: Another Sentence.
Line 3: The end.
您可能需要调整搜索模式以处理其他字符的行,但这对程序员来说是个好习惯。
答案 1 :(得分:0)
您可以使用string.gsub
,因为它返回执行的替换次数作为第二个结果:
local _, replacements = string.gsub(text, "\n", "\n")
更新(19/4/22):如果您需要为每行添加行号(最初的问题是关于行计数),那么您仍然可以使用string.gsub
,但是您需要提供将对行进行计数的函数,例如:
lines = 1
local text = "1 |"..string.gsub(text, "\n", function(s) lines = lines + 1 return s..lines.." |" end)
print(text)
print(lines)
对于您的文字,将打印:
1 |while true do
2 |sleep(0)
3 |write("Example")
4 |write("Script\n\n")
5 |end
5