对字符串里的字符逐个扫描,把每个查找字符表里的字符,替换为替换字符表里对应的字符。
$a='abcdefg'; $a =~ tr/abc/ABC/; #将a、b、c分别替换为A、B、C
当替换字符表长度小于查找字符表时,则自动复制其最后一个字符直至补足。
$_ = <>; tr/0-9/*/; #将输入的所有数字替换成*。
当替换字符表为空时,则自动复制查找字符表,实际上不发生替换。常用于指定字符计数。
$_ = <>; $count=tr/0-9//; #计算输入字符串里数字的个数
如果查找字符表里有重复字符,则只有第一个有效
$a='abcdefg'; $a =~ tr/aaa/ABC/; #相当于tr/a/A/
修饰符"d":不允许替换字符表自动补足,结果将删除找到但没有对应替换的字符
$_ = <>; tr/0-9/*/; #将0替换为*,其他数字删除
修饰符"s":如果替换生成的字符里出现了重复字符序列,则合并为一个。注意:未替换部分的重复序列不压缩
$a='abcdehhh'; $a =~ tr/abc/iii/s; #结果为IDehhh
tr默认不允许进行变量替换,但可以使用eval实现
eval "tr/$search/$replace/"
2、大小写转换
\l #将下个字符转为小写
print "\lABC\n"; #输出"aBC"
\u #将下个字符转为大写
$_=<>; print "\u$_"; #将输入单词改为首字母大写
\L #将\E为止的字符转为小写
\U #将\E为止的字符转为大写
\E #结束\L和\U
print "A\LBC\ED\n"; #输出AbcD
3、使用index查找子字符串
$where=index($str,$sub); #返回$sub在$str中首次出现的位置。
#注意字符串的位置计数从0开始。
#如果未找到,返回-1
$where=index($str,$sub,3); #可以使用第三个参数指定起始查找位置
#利用循环可以重复搜索所有出现的位置
$where=rindex($str,$sub)); #从后往前查,返回$sub在$str中最后出现的位置。
#也可以使用第三个参数,指定起始查找位置的最大值
4、从字符串中提取片段
substr (字符串,起始位置,长度,替换字符串)
字符串的位置计数从0开始
如果长度设置超过了字符串结尾,只能得到起始位置到结尾的部分,不会自动延长。但如果就是想得到起始到结尾的部分,只需省略长度参数即可。
起始位置和长度都可以是负数。长度取负数时指的是停止位置,而不是反方向计数。片段提取只能从左往右,不能反方向。
substr ("abcde",3,10); #返回"de"
substr ("abcde",3); #返回"de"
substr ("abcde",-2); #返回"de"
substr ("abcde",1,-1); #返回"bcd"
substr ("abcde",-3); #无匹配
替换字符串不必和提取片段等长。有两种方式可以进行替换。
$_="abcde"; $a=substr ($_,2,"12345"); #替换为ab12345e,但该表达式返回被替换的字符串,即"cd"
print "$_\n$a\n"; #第一行ab12345e,第二行cd
$_="abcde"; substr ($_,2)="12345"; print "$_\n"; #输出ab12345e
5、几个特殊运算符 length() #字符串长度,注意"\n" lc() #将字符串小写 uc() #将字符串大写 reverse() #将字符串反排,注意必须用于标量上下文中
总结以上是内存溢出为你收集整理的perl系列:字符串 *** 作(非正则表达式)全部内容,希望文章能够帮你解决perl系列:字符串 *** 作(非正则表达式)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)