如何找到字节数组中字符串的行号?
我试图找到的内容:
- 代码文件中的函数定义。
我拥有的信息:
- 代码文件。
- 代码文件中函数定义开始位置的字节索引和长度(以字节为单位)。
我应该如何在文件中查找该函数的行号?
我当前的想法:
- 将代码文件作为字节数组读取
- 通过使用起始索引和长度在字节数组中查找函数结尾。
- 将此函数从二进制转换为文本。
- 将整个代码文件从二进制转换为文本。
- 对文本中的行进行编号。
- 模式匹配以查找函数在文本中的位置并返回行号。
我正在使用 Golang 作为后端服务,我相信它会执行此功能。不过我也有一个 JavaScript 前端,如果需要的话我可以利用它来提供帮助。
What I'm trying to find:
- A function definition within a code file.
Information I have:
- Code file.
- The byte index of where the function definition starts in the code file and length in bytes.
How should I go about finding this function's line number in the file?
My current thoughts:
- Read code file as byte array
- Find function inside byte array by using start index and length for end.
- Convert this function from binary to text.
- Convert whole code file from binary to text.
- Number the lines in the text.
- Pattern match to find where the function is in the text and return line number.
I'm using Golang for the back-end service which I believe will execute this functionality. Though I also have a front-end in JavaScript which I can leverage to help if needed.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
假设文件
p
的内容为[]byte
类型,函数的字节索引为 inti
,则bytes.Count(p[:i], []byte{'\n'}) + 1
返回函数的行号。Assuming that you have the contents of the file
p
as type[]byte
and the byte index of the function as inti
, thenbytes.Count(p[:i], []byte{'\n'}) + 1
returns the line number for the function.像计算换行符这样的东西是否足够好,或者您是否正在研究一些更调整的东西?
您可以开始计算换行符
\n
直到到达字节索引。行号是换行符的数量。
Would something like counting newline characters be good enough, or are you looking into something more tweaky?
You could just start counting newlines
\n
until you reach the byte index.The line number is the number of newline characters.