perl语言——字符串

1. 普通字符串操作

点号.连接两个字符串。

叉号x将字符串复制几次。

1
2
3
4
5
6
$s1 = 'hello';
$s2 = ' world';
$s3 = $s1.$s2;
$s4 = 'a'x3;
print "$s3\n"; # hello world
print "$s4\n"; # aaa

2. chomp操作符去掉字符串末尾的换行符

chomp只能对单个变量操作,基本只能对字符串操作,它的作用就是去掉字符串末尾的换行符。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$s1 = "hello\nhow are you\n";
$s2 = "I am fine\n";
print $s1;
print $s2;
chomp($s1);
chomp($s2);
print $s1;
print $s2;
# 输出:
hello
how are you
I am fine
hello # 字符串内部hello后面的换行符不会被去掉
how are youI am fineliu # $s1最后的换行符被去掉

3. split操作符

split操作符,根据字符将字符串分成多组,返回一个数组保存结果

1
2
3
$str = "hello world";
@res = split " ",$str; # 以空格为界切分$str,数组@res保存结果
print $res[0],"\n"; # hello

split默认以空白符切分变量$_

1
2
3
$_ = "hello world";
@res = split; # 以空格为界切分$_,数组@res保存结果
print $res[0],"\n"; # hello

4. join函数

与split相反的作用,将多个字符串连接起来

1
2
3
4
5
 $str = "hello world";
@res = split " ",$str;
print $res[0],"\n";
$str = join "+",@res;
print "$str\n"; # hello+world

join函数连接的列表至少要有两个元素

5. index——在字符串中查找子字符串

在字符串中查找子字符串,如果找到则返回子字符串第一次出现的索引位置,找不到返回-1.

1
2
3
4
5
6
7
8
$str = "hello hello hello";
$substr = 'hello';
# index(str,substr)
$ind1 = index($str,$substr); #也可以直接用'hello'
print $ind1; # 输出0,不关心后面的hello
# index(str,substr,startindex) #从startindex索引处开始找substr
$ind2 = index($str,$substr,$ind1+1);
print $ind2; # 输出6

6. substr 提取子字符串

返回字符串的一段子字符串。

1
2
3
4
5
6
# substr(str,initial_position,length)
my $substr = substr('this is good day',0,4);
print $substr; # output: this
# 如果要输出之后的所有,省略第三个参数即可
my $substr = substr('this is good day',0);
print $substr; # output:this is good day

如果第二个参数initial_position是-1,表示从倒数第一个开始提取,

1
2
my $substr = substr('this is good day',-3,3);
print $substr; # output : day

7. sprintf 格式化返回字符串

sprintf 格式化返回字符串,用法跟print一样,只是不会打印,而是将字符串返回,可以保存在变量中。

1
2
3
4
$name = 'dong';
$age = 24;
$info = sprintf("name : %s ; age : %d\n",$name,$age);
print $info; #输出: name : dong ; age : 24

8、大小写处理函数 lc(转为小写) uc(转为大写) 。

1
2
3
4
5
$text="zhengwen feng";
$text2=lc $text;
$text3=uc $text;
print "$text2\n";
print "$text3\n";

9、将第一字母变为小写(lcfirst),将第一个字母大写(ucfirst)。

1
2
3
4
5
$string="zheng";
$string2=lcfirst $string;
$string3=ucfirst $string;
print "$string2\n";
print "$string3\n";

10、字符串中取串长(字符数量)-length

1
2
$str="abCD99e";
$strlen=length($str);

11、字符串比较函数 eq、ne、cmp、lt、gt、le、ge,

使用cmp就好。绝不能用’==’,要用eq,正确的做法是:不论整形Perl字符串,都用eq。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
lt           小于 
gt 大于 
eq 等于 
le 小于等于 
ge 大于等于 
ne 不等于 
cmp 比较, 返回1,0,or-1

$s1 = 'dong';
$s2 = 'wang';
if($s1 eq $s2) {
print "$s1 and $s2 is equal\n";
}
# 其他的函数用法类似,比较两个字符串

12、双引号字符串中的转义符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
符号    含义
\n 换行
\r 回车
\t 制表符
\f formfeed
\b 退格
\a 响铃
\e escape(ASCII中的escape字符)
\007 任何八进制值(这里是,007=bell(响铃))
\x7f 任何十进制值(这里是,007=bell)
\cC 一个控制符(这里是,ctrl+c)
\\ 反斜线
\" 双引号
\l 下个字符小写
\L 接着的字符均为小写直到\E
\u 下个字符大写
\U 接着的字符均为大写直到\E #可以直接将字符串转换成大写形式
\Q 在non-word字符前加上\,直到\E
\E 结束\L,\E和\Q

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!