是否可以foreach
在 Perl 中有一个带有条件的循环?
我必须逐个字符地处理很多字符-foreach
循环非常方便。请注意,我不能使用某些库,因为这是用于学校的。
如有必要,我可以使用条件编写一个for
循环substr
,但我想避免这种情况!
你应该给我们看一些代码,包括你想做的事情。
通常,字符串的逐个字符处理将在 Perl 中通过编写
for my $ch (split //, $string) { ... }
或者,如果更方便的话
my @chars = split //, $string;
for (@chars) { ... }
或者
my $i = 0;
while ($i < @chars) { my $char = $chars[$i++]; ... }
后一种形式可以支持while
条件中的多个表达式。Perl 有很多不同的方法来做类似的事情,如果不了解你的问题,就不可能说哪种方法最适合你。
编辑
需要注意的是,这些方法都不允许修改原始字符串。如果这是您的意图,那么您必须使用s///
,tr///
或substr
。
请注意,substr
有第四个参数将替换原始字符串的指定部分。另请注意,它可以充当左值,因此可以进行赋值。换句话说
substr $string, 0, 1, 'X';
可以等价地写为
substr($string, 0, 1) = 'X';
如果split
用于将字符串转换为字符列表(实际上是一个字符的字符串),则可以在此状态下对其进行修改并使用 重新组合为字符串join
。例如
我的 @chars = 拆分 //, $string; $chars[0] = 'X'; $string = 加入'',@chars;
使用substr
.
例如:
foreach my $l (@something) {
last if (condition);
# ...
}
如果条件为真,将退出循环
您可能会调查next
andlast
指令。中的更多信息perldoc perlsyn
。