【问题标题】:Search within a fixed width text file在固定宽度的文本文件中搜索
【发布时间】:2011-10-08 14:26:10
【问题描述】:

考虑一个固定的文件

ID   TYPE      YEAR
1    Book      2000
2    Car       2007
3    Home      2005

有没有办法在列中进行搜索?实际上,我们需要跳过其他行,在每行的字符 x 到 y 内进行搜索。例如,5 - 15 用于搜索 TYPE。我更喜欢在 php 中找到解决方案,但如果只能使用指定的语言,那就可以了。

【问题讨论】:

  • 你是说不把它变成另一个数据结构(比如数组)吗?或者将加载到数组中然后搜索工作?对我来说,它看起来像是一个以空格分隔的 CSV,因此您应该能够加载它并使用子字符串逐行执行..
  • 把它变成数组会消耗大量内存。
  • 对,它会;这取决于你想要做什么。如果您真的不关心没有匹配(过滤)的任何行,只需使用CSV function 逐行执行并捕获strpos() 上的数据。如果您正在排序(听起来不像),那么您可能仍会逐行进行。我是在走出门时写下这条评论的,所以这只是我想到的第一件事。

标签: php file search text


【解决方案1】:

依次读取每一行并使用strpos 在其中搜索,方法是传入$offset 参数以从您的列开始搜索。然后检查返回值,如果它实际上在另一列中找到结果,则忽略“成功”搜索(知道目标列的宽度会将其减少为整数比较)。

或者,您可以substr 每行的目标列并仅在其中搜索,在这种情况下,您确实执行了可能不必要的字符串操作,但另一方面您减少了要搜索的字符串的长度(并且无需检查结果是否在另一列中找到)。

在您决定采用哪种方法之前,我会先对其进行一些基准测试。

【讨论】:

    猜你喜欢
    • 2011-02-11
    • 2013-01-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多