arrays - 从数组中删除其子字符串本身就是数组元素的元素

标签 arrays perl

在 Perl 中,我想从数组中删除所有元素,其中同一数组的另一个元素是所述元素的非空子字符串。

假设我有数组

@itemlist = ("abcde", "ab", "khi", "jklm");

在本例中,我希望删除元素 "abcde",因为 "ab""abcde" 的子字符串.

我可以复制数组(也许作为散列?),对其进行迭代,尝试对原始数组的每个元素进行索引并将其删除,但必须有一种更优雅的方法,不是吗?

感谢您的帮助!

为清楚起见进行了一些编辑。

最佳答案

您可以从所有项目构建一个正则表达式并丢弃任何匹配的内容:

$alternation = join('|', map(quotemeta, @itemlist));
@itemlist = grep !/($alternation).|.($alternation)/, @itemlist;

().|.() 只是确保某个项目与自身不匹配。

关于arrays - 从数组中删除其子字符串本身就是数组元素的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14382399/

相关文章:

java - 在 Integer.MIN_VALUE、Integer.MAX_VALUE 值之间使用 Arrays.sort 和比较器

perl - 使用Perl搜索并替换文件中的特定字符串

perl - 阅读文本的好方法是什么?

mysql - 仅在行首查找和替换

perl - Perl 中中型数据的最佳 IPC 机制是什么?

php - 如何在搜索表单上设置默认值?

arrays - 在两个数组中查找共同的精确元素

java - 比较字符串时使用 Comparable 接口(interface)

C(动态)数组(固定大小)

perl - 将文件直接下载到 FTP 服务器