我得到了下面的代码,可以将空格替换为下划线。
代码:
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
但是,如果$subject
由FD 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_
谢谢!
答案 0 :(得分:2)
使用替换:
$subject =~ s/(?<=\w)\s(?=\w)/_/g;
只有在前缀和后跟单词字符时才会替换空格。
你也可以使用:
$subject =~ s/(?<!^)\s(?!$)/_/g;
只有当它们不在字符串的开头或末尾时才会替换空格。