Perl函数:字符串相关函数
Perl函数:字符串相关函数
字符串的内置函数有:
1 | chomp, chop, chr, crypt, fc, hex, index, lc, lcfirst, length, oct, |
分为几类:
- 字符大小写转换类:
- lc:(lower case)将后面的字母转换为小写,是
\L
的实现 - lcfirst:将后面第一个字母转换为小写,是
\l
的实现 - uc:(uppercase)将后面的字母转换为大写,是
\U
的实现 - ucfirst:将后面第一个字母转换为大写,是
\u
的实现 - fc:(foldcase)和lc基本等价,只不过fc可以处理UTF-8类的字母
- lc:(lower case)将后面的字母转换为小写,是
- 字符处理类函数:
- 字符位置索引:
- index:获取字符所在索引位置,后文详细示例index和rindex
- rindex:也是获取字符所在索引位置,后文详细示例index和rindex
- 进制转换类:
- hex:将16进制转换为十进制。当字符以
0x
或x
开头时会自动被认为是十六进制数 - oct:将8进制转换为十进制。当字符以
0
开头时会自动被当作8进制数 - ord:将字符串的第一个字符转换为ascii码
- chr:将ascii转换为对应的字符
- hex:将16进制转换为十进制。当字符以
- 其他类:
- crypt:(暂时略)
- length:返回字符串字符数量,后文详细示例length
- pack:(暂时略)
- q//:相当于给字符串加单引号(quote)
- qq//:相当于给字符串加双引号(double quote)
- sprintf:(略)printf的不输出版,不用于输出,而用于返回本该输出的内容
chop
和chomp有点类似。
- chop去除行尾字符,返回行尾去除的字符
- 修改hash的时候,去除每个value的最后一个字符,而不是最后一个key,并返回最后一个value被删除的字符
- 修改列表时,去除每个元素的最后一个字符
1.修改字符串
1 | $str="abnc"; |
2.修改hash
1 | %myhash=(name => "malongshuai", |
执行返回:
1 | prov:jiangx |
3.修改列表
1 | @list=qw(aaa bbb ccc ddd); |
reverse
reverse用于反转列表、标量字符串、hash。
- 反转列表时,将返回反序的列表
- 当放在标量上下文时,将做字符串反转
- 当反转hash时,将把value反转成key,所以当value有重复值时,反转时会丢弃一部分键值
- reverse不是作用在原始内容上的,而是通过返回值返回反转结果
反转列表:将元素反转
1 | @arr=qw(abc def ghi); |
标量上下文下:串联各元素得到一个标量,然后反转这个标量,即使反转目标是列表
1 | @arr=qw(aA bB cC dD ); |
反转字符串:
1 | print scalar reverse "hello"; # 输出olleh |
反转hash:会把value反转成key,所以value重复时,将丢弃一部分键值
1 |
|
执行结果:
1 | dD -> cC |
substr
用于从给定字符串中提取出一段子字符串。
用法:
1 | substr STRING,OFFSET,LENGTH,REPLACEMENT |
其中:
- offset从0开始计算
- offset为负数时,表示从尾部位移(从-1开始计算)往前位移
- length如果忽略,则从offset处开始取到最尾部
- length为负数时,length则表示从后往前的位移位置,所以将提取从offset到length处的子串
- replacement替换string中提取出来的字串。需要注意两点:
- 加了replacement,将返回提取的子串
- 但源字符串STRING已被替换
1 | use 5.010; |
可以将substr函数作为左值(lvalue),这样可以修改源变量,就像给了replacement参数一样:
1 | use 5.010; |
index和rindex
index和rindex用来找出给定字符串中某个子串或某个字符的索引位置。
用法:
1 | (r)index STRING,SUBSTR,POSITION |
- index用于搜索STRING中第一次出现SUBSTR的位置,rindex则搜索最后一次出现的SUBSTR位置
- 如果省略position,则从起始位置(从0开始计算)开始搜索第一次出现的子串
- 给定position,则从position处开始搜索,如果是rindex,则是找position左边的
- 如果STRING中找不到SUBSTR,则返回-1
1 | use 5.010; |
length
用于返回字符串的字符数量,不是字节数。如果是字节数,则采用unicode模块。
下面的例子中,将输出11。
1 | $str="hello world"; |
length不能直接作用于数组和hash来统计元素个数。想要统计个数:
- 对于数组,直接将其放在标量上下文即可
- 对于hash,可使用keys函数返回hash键,然后放进标量上下文
1 | # 数组元素个数 |
如果length的对象未定义,则返回undef。如果length的对象没有字符但已定义,则返回0。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 骏马金龙!
评论