회전: perl 문자열 처리 함수

문자열 작업
여기 서 는 주로 하위 문자열, 문자열 의 길이, 대소 문자 변환, 어떤 하위 문자열 을 찾 는 등 조작 을 설명 한다.
하위 문자열
예 를 들 어 $str = "mynameis";'my n' 은 바로 'my nameis' 의 하위 문자열 이다.
Perl 은 substr 라 는 편지 식 을 제공 합 니 다. 하위 문자열 을 캡 처 할 수 있 습 니 다.


= substr , , [ ]

: 0 , , ,
:-1 ,-3 。
, 。



$str = "ABCDEFG1234567";

$a = substr $str, 0, 5; # 5

print $a;

# :ABCDE


$a = substr $str, 3, 4; # 4 4

print $a;

# :DEFG


$a = substr $str, 5; # 6

print $a;

# :FG1234567


$a = substr $str, -1; #

print $a;

# :7


$a = substr $str, -4, 2; # 2

print $a;

# :45

문자열 길이
Perl 은 문자열 의 길 이 를 계산 할 수 있 는 length 함 식 을 제공 합 니 다.


$str=" ";
$str_len = length($str);

print $str_len, "/n/n";

대소 문자 변환
Perl 은 ucc / lc 편지 식 을 제공 합 니 다. 문자열 을 대문자 / 소문 자로 바 꿀 수 있 습 니 다.


#
$str = uc( );

#
$str = lc( );

$str="abCD99e";
$str = uc($str); # $str ABCD99E
$str = lc($str); # $str abcd99e

하위 문자열 찾기
Perl 은 index 편지 식 을 제공 합 니 다. 문자열 에서 어떤 문자열 의 시작 위 치 를 찾 을 수 있 습 니 다.


$pos = index($str1, $str2);

# $str2 $str1

하위 문자열 의 마지막 위 치 를 찾 습 니 다.
Perl 은 rindex 편지 식 을 제공 합 니 다. 문자열 에서 어떤 문자열 의 마지막 시작 위 치 를 찾 을 수 있 습 니 다.


$pos = rindex($str1, $str2, $pos);

# $str1 $pos , $str2 $str1
# $pos , 。

ASCII 값 되 돌리 기
Perl 은 ord 편지 식 을 제공 하여 특정한 글자 원 의 ASCII 값 을 전송 할 수 있 습 니 다.


$num = ord( );




$num = ord('a');

print "$num/n";

chr 편지 식 은 ASCII 값 을 문자 로 변환 할 수 있 습 니 다.


$char = chr( );




$char = chr(48);
http://linux.tnc.edu.tw/techdoc/perl_intro/x348.html

print "$char/n";
---------------------------------------
#!/usr/bin/perl


#-----------------------------

#substr , , :

#$value = substr($string, $offset, $count);

#$value = substr($string, $offset);


#substr($string, $offset, $count) = $newstring;

#substr($string, $offset) = $newtail;

#-----------------------------

# 5 , , 2 8 , $trailing

#unpack/pack , google ‘perl unpack’

($leading, $s1, $s2, $trailing) =
    unpack("A5 x3 A8 A8 A*", $data);

# 5 , @fives

@fivers = unpack("A5" x (length($string)/5), $string);

# , @chars

@chars = unpack("A1" x length($string), $string);
#-----------------------------

$string = "This is what you have";
# +012345678901234567890 Indexing forwards (left to right)

# 109876543210987654321- Indexing backwards (right to left)

# note that 0 means 10 or 20, etc. above

# :

$first = substr($string, 0, 1);
# "T"

$start = substr($string, 5, 2);
# "is"

$rest = substr($string, 13);
# "you have"

$last = substr($string, -1);
# "e"

$end = substr($string, -4);
# "have"

$piece = substr($string, -8, 3);
# "you"

#-----------------------------

$string = "This is what you have";
print $string;
#This is what you have


substr($string, 5, 2) = "wasn't";
# "is" "wasn't"

#This wasn't what you have


substr($string, -12) = "ondrous";
# 12

#This wasn't wondrous


substr($string, 0, 1) = "";
#

#his wasn't wondrous


substr($string, -10) = "";
# 10

#his wasn'

#-----------------------------

# =~ ,=~ , , google Perl

# True; False。 pattern 。

if (substr($string, -10) =~ /pattern/) {
    print "Pattern matches in last 10 characters/n";
}

# "is" "at", ;=~ s/// 。

substr($string, 0, 5) =~ s/is/at/g;
#-----------------------------

# $a

$a = "make a hat";
(substr($a,0,1), substr($a,-1)) = (substr($a,-1), substr($a,0,1));
print $a;
# take a ham

#-----------------------------

#

$a = "To be or not to be";
$b = unpack("x6 A6", $a);
# 6 , 6

print $b;
# or not


($b, $c) = unpack("x6 A2 X5 A2", $a);
# 6 , 2 ; 5 , 2

print "$b/n$c/n";
# or

#

# be

#-----------------------------

# , ,

# 。

sub cut2fmt {
    my(@positions) = @_;
    my $template = '';
    my $lastpos = 1;
    foreach $place (@positions) {
        $template .= "A" . ($place - $lastpos) . " ";
        $lastpos = $place;
    }
    $template .= "A*";
    return $template;
}

$fmt = cut2fmt(8, 14, 20, 26, 30);
print "$fmt/n";
# A7 A6 A6 A6 A4 A*

#-----------------------------
http://blog.chinaunix.net/u/20754/showart_223337.html
---------------------------------------------
perl
1,index
position = index (string, substring, position)
substring string , -1。 position , , 。


[root@localhost ~]# echo -n '/var/fap/test/123' | perl -ne '$rev=index($_, "a"); print $rev,"/n";'
2
[root@localhost ~]# echo -n '/var/fap/test/123' | perl -ne '$rev=index($_, "a", 1); print $rev,"/n";'
2
[root@localhost ~]# echo -n '/var/fap/test/123' | perl -ne '$rev=index($_, "a", 3); print $rev,"/n";'
6
[root@localhost ~]# echo -n '/var/fap/test/123' | perl -ne '$rev=index($_, "a", 7); print $rev,"/n";'
-1


2,rindex
position = rindex (string, substring, position)
index , 。



[root@localhost ~]# echo -n '/var/ftp/tesa/123' | perl -ne '$rev=rindex($_, "a", 11); print $rev,"/n";'
2
[root@localhost ~]# echo -n '/var/ftp/tesa/123' | perl -ne '$rev=rindex($_, "a", 12); print $rev,"/n";'
12
[root@localhost ~]# echo -n '/var/ftp/tesa/123' | perl -ne '$rev=rindex($_, "a", 1); print $rev,"/n";'
-1
[root@localhost ~]# echo -n '/var/ftp/tesa/123' | perl -ne '$rev=rindex($_, "a", 2); print $rev,"/n";'
2


3,length
num = length (string)
, 。



[root@localhost ~]# echo -n '/var/ftp/tesa/123' | perl -ne '$rev=length($_); print $rev,"/n";'
17
[root@localhost ~]# echo -n '/var/ftp/tesa/123 ' | perl -ne '$rev=length($_); print $rev,"/n";'
19


4,substr
substr (expr, skipchars, length)
( )expr , skipchars , skipchars ( 0), length,

, 。
,expr , 。

substr() : 。 。



[root@localhost ~]# echo -n '/var/ftp/test/123' | perl -ne '$rev=substr($_, 9,);print $rev,"/n";'
test/123
[root@localhost ~]# echo -n '/var/ftp/test/123' | perl -ne '$rev=substr($_, 9, 4);print $rev,"/n";'
test


[root@localhost ~]# echo -n '/var/ftp/test/123' | perl -ne '$rev=substr($_, 9, 4)="hello"; print $rev,"/n";'
hello

[root@localhost ~]# echo -n '/var/ftp/test/123' | perl -ne '$rev=substr($_, 9, 4)=""; print $rev,"/n";'




5,lc,uc,lcfirst,ucfirst
lc,
uc,
lcfirst,
ucfirst,



[root@localhost ~]# echo -n 'hello, hanli' | perl -ne '$rev=uc($_); print $rev,"/n";'
HELLO, HANLI
[root@localhost ~]# echo -n 'HELLO, hanli' | perl -ne '$rev=lc($_); print $rev,"/n";'
hello, hanli
[root@localhost ~]# echo -n 'hello, Hanli' | perl -ne '$rev=ucfirst($_); print $rev,"/n";'
Hello, Hanli
[root@localhost ~]# echo -n 'hello, Hanli' | perl -ne '$rev=lcfirst($_); print $rev,"/n";'
hello, Hanli
http://blog.chinaunix.net/u/25264/showart.php?id=1412747

좋은 웹페이지 즐겨찾기