gpt4 book ai didi

javascript - 从文件中的字符索引获取行号

转载 作者:行者123 更新时间:2023-11-29 14:49:02 24 4
gpt4 key购买 nike

我有一个由单词组成的字符串输入。我正在使用 regex.exec (g) 通过函数 getWord(input)

获取所有单词

所以我的输入可能是这样的:
词词2
一句话废话

我从 exec 得到的是包含匹配的 index 的对象。所以它是这样的数组:
['单词',索引:0,输入:“...”]
...
[ 'someword', index: 11, input: "..."]
...

我需要的是使用索引 (11) 轻松计算第 2 行上的单词“someword”(因为我没有任何其他值告诉我行数是多少)

这是我想出的:匹配 '\n' 直到你匹配\n 与更高的索引然后是单词的索引。不确定这在 10k 行文件中是否没有问题。

想法片段:

getLineFromIndex: (index, input) ->
regex = /\n/g
line = 1

loop
match = regex.exec(input)
break if not match? or match.index > index

line++

return line

可以在这里进行相当大的优化。我可以保存正则表达式和最后一个匹配项,这样我就不会在每次要检查行号时都重复所有输入。只有当最后一个匹配项的索引低于当前索引时,才会执行正则表达式。

这是优化的最终想法:

  ###
@variable content [String] is input content
###
getLineFromIndex: (index) ->
@lineMatcher = @lineMatcher || /\n/g
@lastLine = @lastLine || 1

if @eof isnt true
@lastMatch = @lastMatch || @lineMatcher.exec(@content)

if @eof or index < @lastMatch.index
return @lastLine
else
match = @lineMatcher.exec(@content)
if not @eof and match is null
@eof = true
else
@lastMatch = match

@lastLine++

return @lastLine

最佳答案

  1. 剪切输入 (a.substr(0, 11))。
  2. 拆分它 (a.substr(0, 11).split('\n'))。
  3. 计算它 (a.substr(0, 11).split('\n').length)。

关于javascript - 从文件中的字符索引获取行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28913619/

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