Autohotkey 确定文件中是否存在字符串

Autohotkey 确定文件中是否存在字符串,autohotkey,Autohotkey,我有一个字符串列表,例如: 约翰 无名氏 彼得潘 在.txt文件中 我想做一个循环,检查某个名称是否存在。然而,如果我搜索“彼得”并且只存在“彼得·潘”,我不希望它是真的。每行必须完全匹配。如果要检查多个名称,请使用一个。如果你只有一个名字,你可以使用 我将为您要检查的多个名称解释这一点,因为只有一个,维基百科上提供的示例就足够了,您可以应用相同的想法 根据要查找的名称构造所述trie,并对文件中的每一行逐个字符遍历trie,直到到达最后一个节点 好处:trie被算法使用,它是KMP对多模式的扩

我有一个字符串列表,例如:

约翰

无名氏

彼得潘

在.txt文件中


我想做一个循环,检查某个名称是否存在。然而,如果我搜索“彼得”并且只存在“彼得·潘”,我不希望它是真的。每行必须完全匹配。

如果要检查多个名称,请使用一个。如果你只有一个名字,你可以使用

我将为您要检查的多个名称解释这一点,因为只有一个,维基百科上提供的示例就足够了,您可以应用相同的想法

根据要查找的名称构造所述trie,并对文件中的每一行逐个字符遍历trie,直到到达最后一个节点

好处:trie被算法使用,它是KMP对多模式的扩展。读一读。这很值得

更新:


要检查是否存在单个名称,请输入要查找的名称,然后逐行读取文本文件。对于每一行,使用相同的函数对其进行散列,并将其与要查找的行进行比较。如果它们相等,请逐个字符比较字符串。您需要这样做以避免误报(请参阅哈希冲突)

哈哈,ep0的答案非常复杂

但是,您希望使用类似这样的解析循环(本例期望您的名称由回车分隔)。假设你有一个文本文件,里面有这样的内容:

John
Harry
Bob
Joe
以下是您的脚本:

fileread, thistext, %whatfile%  ;get the text from the file into a variable
;Now, loop through each line and see if it matches your results:

loop, parse, thistext, `r`n, `r`n
{
  if(a_loopfield = "John")
     msgbox, Hey! It's John!
  else
     msgbox, No, it's %a_loopfield%
}

如果名称的排列顺序不同,您可能需要更改解析循环的分隔符,或者使用正则表达式,而不仅仅是简单的比较。

谢谢。这更像是一个在AHK中什么是可能的问题,而不是一个一般的算法问题。-每个名称都存储在.txt文件中的一行中。我想检查是否存在单个名称。