具有条件perl的foreach循环?

Jus*_*tin 0 perl for-loop

是否有可能foreach在Perl中有一个带有条件的循环?

我不得不通过字符处理做很多字符 - foreach循环非常方便.请注意,我不能使用某些库,因为这是为了学校.

如果有必要,我可以for使用substr条件编写循环,但我想避免这种情况!

Bor*_*din 6

你应该向我们展示了一些代码,包括诸如此类的事情,你会喜欢做的事.

通常,字符串的逐字符处理将通过写入在Perl中完成

for my $ch (split //, $string) { ... }
Run Code Online (Sandbox Code Playgroud)

或者,如果更方便的话

my @chars = split //, $string;
for (@chars) { ... }
Run Code Online (Sandbox Code Playgroud)

要么

my $i = 0;
while ($i < @chars) { my $char = $chars[$i++]; ... }
Run Code Online (Sandbox Code Playgroud)

后一种形式可以支持while条件中的多个表达式.Perl非常富有,有不同的方法来做类似的事情,并且不知道更多关于你的问题,不可能说哪个最适合你.


编辑

重要的是要注意,这些方法都不允许修改原始字符串.如果这是意图那么你必须使用s///,tr///substr.

请注意,substr第四个参数将替换原始字符串的指定部分.另请注意,它可以充当左值,因此可以进行分配.换一种说法

substr $string, 0, 1, 'X';
Run Code Online (Sandbox Code Playgroud)

可以写成等价的

substr($string, 0, 1) = 'X';
Run Code Online (Sandbox Code Playgroud)

如果split用于将字符串转换为字符列表(实际上是单字符字符串),则可以在此状态下修改它并使用重新组合成字符串join.例如

我的@chars = split //,$ string; $ chars [0] ='X'; $ string = join'',@ chars;

与上面的代码使用类似的东西substr.