我有以下代码:为什么我仍然会换行?
open INPUT, "input.txt";
my $line = "";
while (<INPUT>)
{
$line = $_;
$line =~ s/\s+^//;
print $line;
}
但产量仍包括了所有的换行。我也试过\v
和\R
。
我有以下代码:为什么我仍然会换行?
open INPUT, "input.txt";
my $line = "";
while (<INPUT>)
{
$line = $_;
$line =~ s/\s+^//;
print $line;
}
但产量仍包括了所有的换行。我也试过\v
和\R
。
/\s+^/
意味着“一个或多个空格字符的开始的字符串之前” —所以它永远不会匹配。
如果你的目标是消除尾随空白字符,那么你需要$
而不是^
:
$line =~ s/\s+$//;
(如果你的目标其实只是删除尾随换行符,那么你或许应该使用the built-in chomp
function)
的可能的复制。[Perl的:函数修剪串前后空白](http://stackoverflow.com/questions/4597937/perl-function-to-trim-string-leading-and-trailing-空格) – JGreenwell
@JGreenwell H ow可能是重复的吗?我已经提供了一段代码摘录,其中明确包含了以下由ruakh指出的错误。 – CJ7
因为你的实际问题是我如何删除尾部空白和解决你的问题的正则表达式在链接问题的答案(还包括关于chomp与正则表达式的注释) – JGreenwell