+ -
当前位置:首页 → 问答吧 → 请教一个perl字符串处理的问题

请教一个perl字符串处理的问题

时间:2011-07-18

来源:互联网

有一个标量如下所示:
Perl code

$str1 = "0.000000e+000 0.000000e+000 9.090622e-001 9.093780e-002 0.000000e+000";


我想把9.090622e-001之前的两个字符串删掉,变成:
Perl code

$str2 = "9.090622e-001 9.093780e-002 0.000000e+000";


请问该如何处理?谢谢啦

作者: kk5172   发布时间: 2011-07-18

Perl code

my $str1 = "0.000000e+000 0.000000e+000 9.090622e-001 9.093780e-002 0.000000e+000";
$str1 =~ s/.*(9\.090622e-001)/$1/;
print("$str1\n");

作者: I_NBFA   发布时间: 2011-07-19

$str1 = substr($str1, index($str1, "9.090622e-001"));

作者: I_NBFA   发布时间: 2011-07-19

引用楼主 kk5172 的回复:
有一个标量如下所示:

Perl code


$str1 = "0.000000e+000 0.000000e+000 9.090622e-001 9.093780e-002 0.000000e+000";


我想把9.090622e-001之前的两个字符串删掉,变成:

Perl code


$str2 = "9.090622e-001 9.093780e-002……


删除的依据是……等于0吗?

作者: fibbery   发布时间: 2011-07-19

Perl code

$str = "0.000000e+000 0.000000e+000 9.090622e-001 9.093780e-002 0.000000e+000";
my @a=split(/\s+/,$str);
my $i=0;
for(;$i<@a;$i++)
{
   if($a[$i]==0)
   {
      shift(@a);
      $i--;
   }
   else
   {
      last;
   }
}
$str=join(" ",@a);
print("$str\n");

作者: fibbery   发布时间: 2011-07-19