从 perl 中的字符串中删除多个新行
remove multiple new lines from a string in perl
我有这样的字符串:
city: London
Code: 123
address: 1, Napoleon
Phone: 123-123-1232
并且所有行都在一个字符串中,我想打印所有信息,但在一行中带有分隔符。
我试过这个代码:
$val =~ s/\n/\ /;
但什么都没有。
你很接近,你需要修饰符 g
查看此程序的行为,第二个打印显示您想要的内容。
您可以在 perldoc.perl.org 上看到 perlre 中的所有修饰符。
use strict;
use warnings;
my $val = <<'END';
city: London
Code: 123
address: 1, Napoleon
Phone: 123-123-1232
END
print $val;
$val =~ s/\n/ /g;
print $val;
我认为音译运算符也可以解决问题:
$val =~ tr/\n/ /;
Transliterate 对字符进行一对一的映射,这意味着它不是多用途的,但它非常适合这样的事情。它还可以做一些很酷的事情,例如:
$val =~ tr/\n/ /s;
其中 "s" 后缀表示采用任意数量的换行符并用单个 space 替换它们,如果你有空白 spaces -- 比如 "address line 2" 是可选的,可能为空。
我有这样的字符串:
city: London
Code: 123
address: 1, Napoleon
Phone: 123-123-1232
并且所有行都在一个字符串中,我想打印所有信息,但在一行中带有分隔符。
我试过这个代码:
$val =~ s/\n/\ /;
但什么都没有。
你很接近,你需要修饰符 g
查看此程序的行为,第二个打印显示您想要的内容。
您可以在 perldoc.perl.org 上看到 perlre 中的所有修饰符。
use strict;
use warnings;
my $val = <<'END';
city: London
Code: 123
address: 1, Napoleon
Phone: 123-123-1232
END
print $val;
$val =~ s/\n/ /g;
print $val;
我认为音译运算符也可以解决问题:
$val =~ tr/\n/ /;
Transliterate 对字符进行一对一的映射,这意味着它不是多用途的,但它非常适合这样的事情。它还可以做一些很酷的事情,例如:
$val =~ tr/\n/ /s;
其中 "s" 后缀表示采用任意数量的换行符并用单个 space 替换它们,如果你有空白 spaces -- 比如 "address line 2" 是可选的,可能为空。