我不明白爲什麼perl chomp
沒有刪除我的字符串周圍的空白。我甚至試過打電話給格格兩次,例如,使用bash:chomp爲什麼不刪除我的字符串周圍的空白?
$ perl -e 'use 5.22.4; chomp(my $extra=" lol "); chomp($extra); say "<$extra>"'
<lol>
我真的有望獲得
<lol>
我不明白爲什麼perl chomp
沒有刪除我的字符串周圍的空白。我甚至試過打電話給格格兩次,例如,使用bash:chomp爲什麼不刪除我的字符串周圍的空白?
$ perl -e 'use 5.22.4; chomp(my $extra=" lol "); chomp($extra); say "<$extra>"'
<lol>
我真的有望獲得
<lol>
的Chomp僅刪除行結束(可以用$/
變量被設置)從字符串的末尾開始。它不修剪字符串。 Perl沒有內置的修剪功能。我通常拼出兩個換人,而不是:
s/^\s+//, s/\s+$// for $string;
延伸閱讀:
global開關在這裏可能更有用「$ extra =〜s/^ \ s + | \ s + $ // g」 – hoffmeister
[perl5i實現](https://metacpan.org/pod/distribution/perl5i/lib/perl5ifaq.pod #如何-DO-I-帶空格關閉一個字符串?) – daxim
要刪除所有空白:
$string =~ s/\s+//g;
左裝飾:
$string =~ s/^\s+//;
右微調:
$string =~ s/\s+$//;
左和右裝飾:
$string =~ s/^\s+|\s+$//g
然後我們就可以建也修剪類函數。這有助於更大的腳本,您不希望每次都寫完整的替換字符串,我們只寫一次,然後使用該函數完成工作。
這個簡單的函數可以在任何腳本用作trim($string);
sub trim {
$_[0] =~ s/^\s+|\s+$//g;
}
類似地使用空白字符的完整條。
sub full_strip {
$_[0] =~ s/\s+//g;
}
在腳本
:
use strict;
use warnings;
my $string = " this is line with leading and trailing whitespaces ";
my $string2 = " another one of those lines ";
trim($string);
trim($string2);
print "$string\n";
print "$string2\n";
full_strip($string);
full_strip($string2);
print "$string\n";
print "$string2\n";
sub trim {
$_[0] =~ s/^\s+|\s+$//g;
}
sub full_strip {
$_[0] =~ s/\s+//g;
}
$string=~s/^\s+|\s+$//g;
這將爲您要刪除開始和結束的空格的一般串正常工作。
你爲什麼期待?請閱讀該功能的文檔。 – Mat
試着在這裏修剪空白處:http://www.perlmonks.org/?node_id=522531 – AntonH
*爲什麼chomp不會刪除我的字符串周圍的空白?*因爲那不是'chomp()'所做的:-) –