如何从数组中删除最后一个字符?
问题描述:
有没有办法从数组中删除最后一个字符?如何从数组中删除最后一个字符?
为了清楚起见,我并不是要求数组中的每个条目都删除其最后一个字符,只有数组的最后一个条目应该删除其最后一个字符。
我曾看过chop/chomp/push/pop等,但很多都与从字符串中删除值有关。
任何帮助将是巨大的
感谢
答
pop
和push
命令添加或删除阵列上的最后一个条目。这些(以及他们的合作伙伴unshift
和shift
)不会对单个字符起作用。
chomp
命令仅删除\n
。它是在Perl 4.0中添加的,用于替换chop
命令,作为从文件中读取一行时删除\n
字符的标准方法。这是因为如果最后一个字符不是\n
,chomp
不会删除任何字符。这意味着即使您不确定最终是否有\n
,也可以安全地使用字符串chomp
。
chop
命令完全符合你的要求。无论该字符是什么,它都会删除最后一个字符。在Perl的早期版本中,你应该检查一下chop
返回的内容以确保它是一个\n
字符。这是你想要的。
您遇到的问题是chomp
和chop
不仅会在标量上下文上操作,还会在数组和哈希上下文上操作。在散列和数组上下文中,它们执行所有标量数据(但不是哈希中的键)。毕竟,如果我在整个文件中读取,这是相当多我想要的东西:
my @file_data = <$file_fh>; #Reads in the entire file into an array
chomp @file_data; #Removes all `\n` in one fell swoop
所以,当你这样做:
chop @my_array;
它是做什么的Perl认为你想,而不是他你实际上想要 - 只从数组中最后一个条目中删除最后一个字符。
你想要做的只是指定该数组中的最后一个条目,只是chomp。有两种方法可以做到这一点:
$my_array[ $#my_array ];
$my_array[ -1 ];
第一个使用这一事实$#my_array
等于阵列中的最后一个条目的索引。第二个采用Perl快捷方式,其中负项反映阵列的末尾:
$my_array[-1]; #Last entry of the array
$my_array[-2]; #Second to the last entry
您将在Perl脚本中看到两种方式。
chop $my_array[-1];
chop $my_array[ $#my_array ];
为什么你不只是砍你的数组中的最后一个值:现在,你可以只是你的阵列的最后一个条目使用
chop
?如果你发现了印章,我不会看到你还有什么其他问题。 – Mat 2013-05-03 13:15:36chop似乎删除了数组中所有元素的最后一个字符,而不仅仅是最后一个字符: – user2320229 2013-05-03 13:17:08
然后,只需将它送入最后一个字符,而不是整个数组。 – Mat 2013-05-03 13:17:46