【问题标题】:how to remove special character "," from a string using perl如何使用perl从字符串中删除特殊字符“,”
【发布时间】:2014-04-13 10:59:35
【问题描述】:

你好,我有一些如下数据

     S_ METHOD m0 : 47|8@0- (1,0) [0|0] ""  
     S_ CTRL m1 : 15|8@0- (0.01,-200) [0|0] ""  

我试图从以上 2 行中提取曲线括号 () 中的内容,我编写了一个 perl 脚本

          my @temp_signal = split(":",$line);
          my @signal= split(" ",@temp_signal[0]);
          my @Factor_temp1 = split (" ",@temp_signal[1]);
          my @factor_temp = split ('\(',@Factor_temp1[1]);
          my @factor = chop(@factor_temp);
          my @offset = split (",",@factor_temp);
          print OUTFILE1 "@offset[0]\n";
          print OUTFILE1 "$signal[1]\n"; 

但是当我试图打印@offset[1] 和@offset[0] 时,它会打印一些其他值,这些值甚至不存在于该行中,我怎样才能将这些值作为

               1  0
               0.01  -200

【问题讨论】:

  • 问题是您将数组传递给第四个split。运算符在标量上下文中评估其操作数。标量上下文中的数组评估为它们拥有的元素数量。
  • 你可能使用use strict;(好!)但你没有使用use warnings;(坏!)

标签: perl


【解决方案1】:

您可以使用正则表达式匹配来提取括号内用逗号分隔的内容:

if ( my @numbers = $line =~ /\((.*),(.*)\)/) {
    print "$numbers[0] $numbers[1]\n";
}

【讨论】:

    猜你喜欢
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 2016-01-23
    相关资源
    最近更新 更多