【发布时间】:2012-10-09 12:12:30
【问题描述】:
我有一个字符串,比如:“5 3*3 4*1 6*3 14*4 3*2 2*3 4”
我希望这个字符串变成一个包含元素的数组:
@array = ( "5", "3" x 3, "1" x 4, "3" x 6, "4" x 14, "2" x 3, "3" x 2, "4" );
我猜还有比这更好(更短)的方法:
$string = "5 3*3 4*1 6*3 14*4 3*2 2*3 4";
@array = split (/\s+/,$string);
foreach(@array) {
if ( /\*/ ) {
s/^(\d+)\*(\d+)/"$2" x $1/g;
} else {
print "$_\n";
$_ = '"'. $_ .'"';
}
}
编辑:这段代码实际上做了我在原始问题中所说的应该做的事情。但这实际上不是我想要的。我希望最终的数组看起来像:
@array = (5, 3, 3, 3, ...)
【问题讨论】:
-
你想要
(5, 3, 3, 3...)吗?还是保持原来的字符串不变? -
是的,感谢您的澄清。我才意识到模棱两可。我想要你猜到的:(5, 3, 3, 3, ...)
-
我现在很困惑,我的代码是否符合您的要求?听起来您想使用重复运算符
标签: perl search replace repeat