【问题标题】:Simplest way to match 2d array of keys/strings to search in perl?匹配二维键/字符串数组以在 perl 中搜索的最简单方法?
【发布时间】:2011-03-03 05:18:30
【问题描述】:

与我之前的问题 (found here) 相关,我希望能够使用二维数组而不是一维数组来实现给出的答案。

Reference Array
row[1][0]: 13, row[1][1]: Sony
row[0][0]: 19, row[0][1]: Canon
row[2][0]: 25, row[2][1]: HP

Search String: Sony's Cyber-shot DSC-S600
End Result: 13

【问题讨论】:

  • “最简单”可以理解为不止一件事。你是说可读性吗?

标签: perl string full-text-search implementation


【解决方案1】:
use strict;
use warnings;

my @array = (
              [ 19, 'Canon' ],
              [ 13, 'Sony'  ],
              [ 25, 'HP'    ],
            );

my $searchString = "Sony's Cyber-shot DSC-S600";

my @result = map { $array[$_][0] }                        # Get the 0th column...
               grep { $searchString =~ /$array[$_][1]/ }  # ... of rows where the
                 0 .. $#array;                            #     first row matches

print "@result";  # prints '13'

这种方法的美妙之处在于它处理了多个匹配的可能性,因此如果 Sony 和 HP 决定在相机上进行合作,您的代码可以返回两者! (13 25)

【讨论】:

  • 我有一个类似的任务,只需要第一个匹配项(一旦找到匹配项,它应该停止进一步搜索)。在这种情况下如何修改您的代码?
  • @ΩmegaΔ : my ( $first ) = map ... ;
猜你喜欢
  • 2011-03-02
  • 2011-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-16
  • 2019-02-18
相关资源
最近更新 更多