是否有可能foreach在Perl中有一个带有条件的循环?
我不得不通过字符处理做很多字符 - foreach循环非常方便.请注意,我不能使用某些库,因为这是为了学校.
如果有必要,我可以for使用substr条件编写循环,但我想避免这种情况!
你应该向我们展示了一些代码,包括诸如此类的事情,你会喜欢做的事.
通常,字符串的逐字符处理将通过写入在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.