2011-11-10 56 views
0

我正在处理一个脚本,该脚本将删除与xFE分隔的文本,文本标识符为x14。用文件读取行中的空字符串覆盖Perl

这里是一个行的一个示例:

þþ \xFE þþ \xFE þþ \xFE þþ \xFE þþ \xFE þþ \xFE þþ \xFE þþ \xFE þþ 

(注:该xFE如果字符将无法正常显示对不起)

我想要的是得到的第n个THTH。我已经将它分割在\ xFE上并且可以检查该值,但是我想要做的是清空þ之间的值。

任何想法?

UPDATE

只是为了澄清,我在做什么是阅读文件,并在在该文件中的行的第N个位置我想以取代THTH字符指定包围的内容。这是一个使用\ xFE和\ x14字符的CSV文件。我想要做的是在\ xFE处拆分行,然后获取\ x14字符之间的值,然后在文件中覆盖该值。

+0

你已经尝试过split(),assign,then join()吗?了解你已经考虑和尝试过的内容以及为什么他们不工作会很有用,因此提出的答案不会提出你已经遇到问题的解决方案。 –

+0

上面一行应该产生的一个例子也是非常有用的 –

回答

0

我正在使用字符串'aaZbbZccZddZeeZff',以便更容易识别第n个项目而不是您正在使用的字符。

作为正则表达式,以去除所述第四条,

my $data = 'aaZbbZccZddZeeZff'; 
$data =~ s/((?:..Z){3})../\1/; 
print $data; 
print "\n"; 

这将返回字符串“aaZbbZccZZeeff”(注意一倍定界符 - 尽管这是很容易通过将定界符于匹配而定)。

如果您已将其拆分为列表,则也可以使用拼接从列表中删除项目,然后重建字符串。

my $data = 'aaZbbZccZddZeeZff'; 
my @data = split('Z',$data); 
splice(@data,3,1); 
print $data; 
print "\n"; 

这将打印'aaZbbZccZeeZff'。