我有以下代碼:爲什麼我仍然會換行?
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