perl系列:字符串 *** 作(非正则表达式)

perl系列:字符串 *** 作(非正则表达式),第1张

概述1、tr/查找字符表/替换字符表/ds 对字符串里的字符逐个扫描,把每个查找字符表里的字符,替换为替换字符表里对应的字符。     $a='abcdefg'; $a =~ tr/abc/ABC/;    #将a、b、c分别替换为A、B、C 当替换字符表长度小于查找字符表时,则自动复制其最后一个字符直至补足。     $_ = <>; tr/0-9/*/;    #将输入的所有数字替换成*。 当替换 1、tr/查找字符表/替换字符表/ds
对字符串里的字符逐个扫描,把每个查找字符表里的字符,替换为替换字符表里对应的字符。
    $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系列:字符串 *** 作(非正则表达式)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1292582.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存