是否有一种简单的方法(除了遍历每个元素)来初始化 n 个元素,@fields
如果它未定义或为空?
my @fields = '-' x n;
$string = 'a|b||c';
@fields = split(/\|/,$string);
是否有一种简单的方法(除了遍历每个元素)来初始化 n 个元素,@fields
如果它未定义或为空?
my @fields = '-' x n;
$string = 'a|b||c';
@fields = split(/\|/,$string);
要创建一个包含n 个元素的数组,您应该使用
my @fields = ('-') x $n;
注意美元符号和括号。
我不明白以下两行代码的意思。如果要在拆分后$fields[2]
包含-
,可以在拆分前修复字符串:
my $string = 'a|b||c';
$string =~ s/\|(?=\|)/|-/g;
my @fields = split /\|/, $string;
或者map
在它之后使用:
my $string = 'a|b||c';
my @fields = map length $_ ? $_ : '-', split /\|/, $string;
我猜您可能想要初始化拆分未提供的所有字段?如果是这样,您可以这样做:
my @fields = ( split(/\|/, $string), ('-') x $n )[0..$n-1];
或这个:
my @fields = split /\|/, $string;
@fields[ @fields..$n ] = ('-') x ($n-$#fields);
或这个:
my @fields = split /\|/, $string;
$_ = '-' for @fields[ @fields..$n ];