How do you find the line number of a string in a byte array?

Issue

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.

Solution

Assuming that you have the contents of the file p as type []byte and the byte index of the function as int i, then bytes.Count(p[:i], []byte{'\n'}) + 1 returns the line number for the function.

Answered By – Bayta Darell

Answer Checked By – David Goodson (GoLangFix Volunteer)

Leave a Reply

Your email address will not be published.