我有一个文本文件,其内容如下:
a b
c
Run Code Online (Sandbox Code Playgroud)
我使用下面的Perl代码替换输入行中出现空格char的下划线' - 'char:
while (<>) {
$_ =~ s/\s/_/;
print $_;
}
Run Code Online (Sandbox Code Playgroud)
我得到这样的输出:
a_b
c_
Run Code Online (Sandbox Code Playgroud)
所以我的问题是为什么Perl在换行符'\n'字符处替换下划线,这从包含'c'的输入行中可以看出?当我在代码中使用chomp时,它按预期工作.
Сух*_*й27 10
\s匹配所有空格字符[ \t\r\n\f],因此如果要替换普通空格,请使用空格
$_ =~ s/ /_/g;
# or just
s/ /_/g;
Run Code Online (Sandbox Code Playgroud)
翻译也可以用于这种简单的替换,例如. tr/ /_/;