developer tip

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

copycodes 2020. 10. 11. 10:46
반응형

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;

perfaq의 완전한 하우투 : http://learn.perl.org/faq/perlfaq4.html#How-do-I-strip-blank-space-from-the-beginning-end-of-a-string-


또한 긍정적 인 미리보기를 사용하여 텍스트 내부의 반복되는 공백을 잘라냅니다.

s/^\s+|\s(?=\s)|\s+$//g

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

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

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


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

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

적용 : s/^\s*//; s/\s+$//;그것에. 또는 s/^\s+|\s+$//g화려하고 싶다면 사용 하십시오.


아니요,하지만 s///대체 연산자와 \s공백 어설 션을 사용하여 동일한 결과를 얻을 수 있습니다.

참고 URL : https://stackoverflow.com/questions/4597937/perl-function-to-trim-string-leading-and-trailing-whitespace

반응형