gpt4 book ai didi

file - 在 Lua 中处理 CR 行结尾

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

我正在尝试使用 CR 读取文件使用 file:read 的行结尾似乎出于某种原因而起作用的方法。文件内容如下所示:

ABCDEFGH
12345
##
6789

我希望它与所有类型的行尾保持一致。每次我尝试读取文件时,它都会返回文件中的最后一行,该行与前一行中的任何尾随字符连接在一起,这些字符的位置大于最后一行中最后一个字符的位置。这就是我的意思:
> file=io.open("test.lua", "rb")
> function re_read(openFile)
openFile:seek("set");
return openFile:read("*a");
end
> =re_read(file) -- With CR
67895FGH

> =re_read(file) -- With CRLF
ABCDEFGH
12345
##
6789

> =re_read(file) -- with LF
ABCDEFGH
12345
##
6789

>

如您所见,返回的字符串是最后一个字符串加上 5在上一行加上 FGH从第一行。任何比最后一行短的行都将被跳过。

我的目标是使用 file:line()逐行读取文件的方法。我的希望是,如果对 file:read 进行“修复”找到然后可以应用到 file:lines() .

最佳答案

在只有 CR 的情况下,re_read实际上按预期工作:它返回由 CR 分隔的行。但是当解释器显示它时,它将 CR 字符解释为“回到行首”。所以这是结果如何逐行变化:

ABCDEFGH
12345FGH
##345FGH
67895FGH

编辑:这里是一个字符一个字符,一个“虚拟光标”( | )。
|
A|
AB|
ABC|
ABCD|
ABCDEF|
ABCDEFGH|
|ABCDEFGH
1|BCDEFGH
12|CDEFGH
123|DEFGH
1234|EFGH
12345|FGH
|12345FGH
#|2345FGH
##|345FGH
|##345FGH
6|#345FGH
67|345FGH
678|45FGH
6789|5FGH

证明:
> s = "ABCDEFGH\r12345\r##\r6789"
> =s
67895FGH

关于file - 在 Lua 中处理 CR 行结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20598937/

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