[英]Why is chomp not removing whitespace around my string?
我不明白为什么perl chomp
没有删除字符串周围的空格。 我什至尝试两次调用chomp,例如,使用bash:
$ perl -e 'use 5.22.4; chomp(my $extra=" lol "); chomp($extra); say "<$extra>"'
< lol >
我真的希望得到
<lol>
Chomp仅从字符串末尾删除行尾 (可以用$/
变量设置)。 它不会修剪字符串。 Perl没有内置的修剪功能。 我通常会拼出两个替代词:
s/^\s+//, s/\s+$// for $string;
进一步阅读:
删除所有空格:
$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;
对于要删除开头和结尾空格的任何通用字符串,这将非常有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.