用下划线替换空格(忽略字符串开头或结尾的空格)

时间:2014-11-12 09:15:20

标签: perl

我得到了下面的代码,可以将空格替换为下划线。

代码:

use strict;
use warnings;    

my $subject ="FD 2000k";

print "Before - $subject\n";
#Result : Before - FD 2000k    
$subject =~ tr/ /_/;

print "After - $subject\n";
#Result : After - FD_2000k

但是,如果$subjectFD 2000k末尾的空格组成,则结果为After - FD_2000K_。请参阅以下代码。

代码:

use strict;
use warnings;  

#Note: Behind 2000k got space
my $subject ="FD 2000k ";

print "Before - $subject\n";
#Result : Before - FD 2000k    
$subject =~ tr/ /_/;

print "After - $subject\n";
#Result : After - FD_2000k_

任何人都知道如何忽略字符串开头或结尾出现的空格?

预期结果:忽略字符串之前或之后的空格,只需替换字符串“中间”的空格即可。结果应为FD_2000k而不是FD_2000k_

谢谢!

1 个答案:

答案 0 :(得分:2)

使用替换:

$subject =~  s/(?<=\w)\s(?=\w)/_/g;

只有在前缀和后跟单词字符时才会替换空格。

你也可以使用:

 $subject =~  s/(?<!^)\s(?!$)/_/g;

只有当它们不在字符串的开头或末尾时才会替换空格。

相关问题