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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/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
Lua 在字符串中分隔/计数行_Lua_Computercraft - Fatal编程技术网

Lua 在字符串中分隔/计数行

Lua 在字符串中分隔/计数行,lua,computercraft,Lua,Computercraft,我目前正在为位于Lua的computerCraft编写一个概念验证文本编辑器;一个特性是行计数。如何计算字符串中的行数,或者至少计算换行符? 理想情况下,显示屏/终端的侧面也会有行号,可以使用相同的代码 我找不到任何足够好的搜索结果,如果已经得到答复,请提供链接 我不知道该怎么做,理想的结果是一个数组,所有的文本行被分成不同的条目;这将解决这两个问题;但可能会出现更多的“定制”选项 希望在帮助下,我可以实现这样的输出 1 |为真时 2 |睡眠(0) 3 |书写(“示例”) 4 |编写(“脚本\n

我目前正在为位于Lua的computerCraft编写一个概念验证文本编辑器;一个特性是行计数。如何计算字符串中的行数,或者至少计算换行符? 理想情况下,显示屏/终端的侧面也会有行号,可以使用相同的代码

我找不到任何足够好的搜索结果,如果已经得到答复,请提供链接

我不知道该怎么做,理想的结果是一个数组,所有的文本行被分成不同的条目;这将解决这两个问题;但可能会出现更多的“定制”选项

希望在帮助下,我可以实现这样的输出

1 |为真时
2 |睡眠(0)
3 |书写(“示例”)
4 |编写(“脚本\n\n”)
5 |结束
:
PPPe代码编辑器~5行
…当某些内容发生更改时刷新

以字符串开头:

local str = "One sentence.\nAnother sentence.\nThe end."
然后:

这将打印:

Line 1: One sentence.
Line 2: Another Sentence.
Line 3: The end.
1 |while true do
2 |sleep(0)
3 |write("Example")
4 |write("Script\n\n")
5 |end
5
您可能需要调整搜索模式以处理带有其他字符的行,但这对程序员来说是一个很好的练习。

从字符串开始:

local str = "One sentence.\nAnother sentence.\nThe end."
然后:

这将打印:

Line 1: One sentence.
Line 2: Another Sentence.
Line 3: The end.
1 |while true do
2 |sleep(0)
3 |write("Example")
4 |write("Script\n\n")
5 |end
5

您可能需要调整搜索模式以处理带有其他字符的行,但这对程序员来说是一个很好的练习。

您可以使用
string.gsub
,因为它将执行的替换次数作为第二个结果返回:

local _, replacements = string.gsub(text, "\n", "\n")
更新(4/22/19):如果需要为每行添加行号(最初的问题是关于行计数),则仍然可以使用
string.gsub
,但需要提供一个计算行数的函数,例如:

lines = 1
local text = "1 |"..string.gsub(text, "\n", function(s) lines = lines + 1 return s..lines.." |" end)
print(text)
print(lines)
对于您的文本,这将打印:

Line 1: One sentence.
Line 2: Another Sentence.
Line 3: The end.
1 |while true do
2 |sleep(0)
3 |write("Example")
4 |write("Script\n\n")
5 |end
5

您可以使用
string.gsub
,因为它将执行的替换次数作为第二个结果返回:

local _, replacements = string.gsub(text, "\n", "\n")
更新(4/22/19):如果需要为每行添加行号(最初的问题是关于行计数),则仍然可以使用
string.gsub
,但需要提供一个计算行数的函数,例如:

lines = 1
local text = "1 |"..string.gsub(text, "\n", function(s) lines = lines + 1 return s..lines.." |" end)
print(text)
print(lines)
对于您的文本,这将打印:

Line 1: One sentence.
Line 2: Another Sentence.
Line 3: The end.
1 |while true do
2 |sleep(0)
3 |write("Example")
4 |write("Script\n\n")
5 |end
5

这不会计算空行数,甚至对你给出的示例也不起作用,因为你的字符集中没有标点符号。这看起来是一个解决方案,但Curtis吓跑了我:PIt是一个解决方案,没有为你做所有的工作。我明确表示,您需要调整搜索模式。这是给你指路的。我将从中吸取一些东西。这不会计算空行,甚至不会对你给出的示例进行处理,因为你的字符集中没有标点符号。这看起来是一个解决方案,但Curtis吓跑了我:PIt是一个解决方案,没有为你做所有的工作。我明确表示,您需要调整搜索模式。这是给你们展示的方法。我将从这个+1中得到一些东西,这是一个很好的变量,可以在每次显示刷新时打印出来,这是一个很好的行计数解决方案,但是要使用行编号+1来获得一个很好的变量,它可以在每次显示刷新时打印出来,这是一个很好的行计数解决方案,但是行号的使用需要大量的修改,只是一个提示,如果你还想做语法突出显示,你很快就会想要比gsub/stratch更复杂的东西。最后,我用纯Lua编写了一个Lua标记器,用于类似的用例。如果它在ConputerCraft中可用,请查看LPEG。一旦我对显示功能有了更多的经验,我会在某个时候用类似的东西制作一个更高级的版本+ZX80没有语法高亮显示,他们的编辑器是促使我这么做的原因(即使它工作起来更像vi)。。。我将谷歌LPeg:)只是一个提示,如果你还打算做语法突出显示,你将需要更多的东西,而不仅仅是gsub/stratch很快。最后,我用纯Lua编写了一个Lua标记器,用于类似的用例。如果它在ConputerCraft中可用,请查看LPEG。一旦我对显示功能有了更多的经验,我会在某个时候用类似的东西制作一个更高级的版本+ZX80没有语法高亮显示,他们的编辑器是促使我这么做的原因(即使它工作起来更像vi)。。。我会用谷歌搜索LPeg:)