繁体   English   中英

为什么chomp无法删除字符串周围的空格?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM