是否有可能在Perl中有foreach
循環條件?帶條件perl的foreach循環?
我不得不通過字符處理做很多字符 - 其中foreach
循環非常方便。請注意,我無法使用一些圖書館,因爲這是爲了上學。
如果需要,我可以使用substr
寫一個for
環路,但有一個條件,但我想避免這種情況!
是否有可能在Perl中有foreach
循環條件?帶條件perl的foreach循環?
我不得不通過字符處理做很多字符 - 其中foreach
循環非常方便。請注意,我無法使用一些圖書館,因爲這是爲了上學。
如果需要,我可以使用substr
寫一個for
環路,但有一個條件,但我想避免這種情況!
你應該向我們展示了一些代碼,包括排序,你會喜歡向做的事情
foreach my $l (@something) {
last if (condition);
# ...
}
將退出循環。
一般來說,字符一個字符的字符串的處理將在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
重組爲一個字符串。例如
my @chars = split //,$ string; $ chars [0] ='X'; $ string = join'',@chars;
和上面的代碼使用substr
做類似的事情。
您可能會調查next
和last
指令。更多信息在perldoc perlsyn
。
非常感謝。分割然後做while循環對我來說是最好的選擇。 – CPlayer