[perl] Perl : 문자열 선행 및 후행 공백을 제거하는 기능

다음과 같이 선행 및 후행 공백을 트리밍하는 내장 함수가 trim(" hello world ") eq "hello world"있습니까?



답변

다음은 정규 표현식을 사용하는 한 가지 방법입니다.

$string =~ s/^\s+|\s+$//g ;     # remove both leading and trailing whitespace

Perl 6에는 트림 기능이 포함됩니다.

$string .= trim;

출처 : Wikipedia


답변

String :: Util 에서 다음 trim메소드를 사용할 수 있습니다 .

편집자 주 : String::Util핵심 모듈 아니지만, 당신은에서 설치할 수 있습니다 CPAN[sudo] cpan String::Util.

use String::Util 'trim';
my $str = "  hello  ";
$str = trim($str);
print "string is now: '$str'\n";

인쇄물:

문자열은 이제 ‘hello’입니다.

그러나 스스로하는 것은 쉽습니다.

$str =~ s/^\s+//;
$str =~ s/\s+$//;


답변

내장 trim함수는 없지만 간단한 대체를 사용하여 쉽게 구현할 수 있습니다.

sub trim {
    (my $s = $_[0]) =~ s/^\s+|\s+$//g;
    return $s;
}

또는 Perl 5.14 이상에서 비파괴 대체 사용 :

sub trim {
   return $_[0] =~ s/^\s+|\s+$//rg;
}


답변

이 perlmonk의 스레드 에 따르면 :

$string =~ s/^\s+|\s+$//g;


답변


답변

Text :: CSV를 사용하는 사람들을 위해이 스레드를 찾은 다음 CSV 모듈 내에서 스위치를 통해 제거 할 수 있음을 알았습니다.

$csv = Text::CSV->new({allow_whitespace => 1});

논리는 당신이 스트립을 원한다면 1로 설정한다는 점에서 거꾸로됩니다. 이것이 누구에게나 도움이되기를 바랍니다.


답변

한 가지 옵션은 Text :: Trim입니다 .

use Text::Trim;
print trim("  example  ");