Perl 프런트 및 드래그 끝 공백 삭제(좌우 공백, 공백 문자 삭제)

다른 일부 프로그래밍 언어에는 문자열의 시작과 끝에서 공백과 탭을 삭제하는 함수 ltrim과 rtrim이 있습니다.문자열 양쪽의 공백 문자를 삭제하는 함수trim도 제공합니다.Perl에는 이런 함수가 없습니다. 간단한 정규 표현식 교체로 이 목적을 실현할 수 있기 때문입니다. (하지만 CPAN에는 많은 모듈이 이 함수를 실현했다고 확신합니다.)사실 이것은 너무 간단해서 파킨슨의 자질구레한 정리에서 현저한 주제가 되었다.
왼쪽 정리
ltrim 또는 lstrip은 문자열 왼쪽에서 공백 문자를 삭제합니다.

$str =~ s/^\s+//;
문자열의 시작^부터 하나 이상의 공백 문자 (\s+) 를 일치시키고 빈 문자로 바꿉니다.
오른쪽 정리
rtrim 또는 rstrip 문자열 오른쪽에서 공백 문자 삭제:

$str =~ s/\s+$//;
문자열 끝 ($) 까지 하나 이상의 공백 문자 (\s+) 를 일치시키고 빈 문자로 바꿉니다.
양쪽 끝을 정리하다
trim 문자열 양쪽의 빈 문자를 삭제합니다.

$str =~ s/^\s+|\s+$//g
위의 두 개의 정규 표현식 또는 기호 | 를 연결하고 마지막에/g 를 추가하여 전역적으로 교체 작업을 수행합니다 (여러 번 반복).
함수에 봉인하다
만약 코드에서 이러한 구조를 보고 싶지 않다면, 코드에 이 함수를 추가할 수 있습니다.

sub ltrim { my $s = shift; $s =~ s/^\s+//;       return $s };
sub rtrim { my $s = shift; $s =~ s/\s+$//;       return $s };
sub  trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s };
사용 시 다음과 같이 하십시오.

my $z = " abc ";
printf "<%s>
", trim($z);   # <abc>
printf "<%s>
", ltrim($z);  # <abc >
printf "<%s>
", rtrim($z);  # < abc>
String::Util
String::Util
만약 정말 그 물건들을 복사하고 싶지 않다면, 너는 모듈을 설치할 수 있다.
예를 들어 String::Util은 함수 trim을 제공합니다. 다음과 같이 사용할 수 있습니다.

use String::Util qw(trim);

my $z = " abc ";
printf "<%s>
", trim( $z );              # <abc>
printf "<%s>
", trim( $z, right => 0 );  # <abc >
printf "<%s>
", trim( $z, left  => 0 );   # < abc>

기본적으로 양쪽을 정리합니다. 매개 변수를 제공할 필요가 없습니다.나는 내가 ltrim과 rtrim을 실현하는 것이 좀 뚜렷할 것이라고 생각한다.
Text::Trim
또 다른 모듈 Text::Trim은 3개의 함수를 제공하지만, Perl 스타일의 작법을 극도로 채택하여 위험한 지경에 이르렀을 수도 있습니다.
만약 그것을 호출하고 반환 값을 print 문장에 사용하거나 변수에 부여한다면, 정리된 문자열을 되돌려주고 원시 문자열을 변하지 않게 합니다.

use Text::Trim qw(trim);

my $z = " abc ";
printf "<%s>
", trim($z);  # <abc>
printf "<%s>
", $z;       # < abc >

다른 한편, 공백 상하문에서 그것을 호출하면, 반환 값을 사용하지 않으면,trim 함수는 파라미터를 수정하여chomp와 같은 행동을 하게 됩니다.

use Text::Trim qw(trim);

my $z = " abc ";
trim $z;
printf "<%s>
", $z;       # <abc>

좋은 웹페이지 즐겨찾기