Perl 字符串处理(勘误)

简介: Perl 字符串处理(勘误)

某位仁兄写的东西有点错误,纠正之后发表于此。因为他也没有按照评论中的修改过来。


1. chop和chomp函数


 两个函数都以字符串作为参数,并去除其末尾最后一个字符。区别是,无论最后一个字符是什么,chop都会去除,并在返回值中返回;而仅当字符串最后一个字符与特殊变量$/保存的字符一样时,chomp才会将其去除。默认情况下$/保存换行字符,当然可以重设。


 1)如果函数参数是一个字符串数组,那么函数会分别对数组中的每个元素调用。


 2)如果函数参数是一个符合列表(即列表中还有其他列表或HASH表),则可以认为保存在参数列表中的是每个复合容器的地址(指针),而此时chop会将地址作为一个字符串处理,从而破坏整个复合列表。


 顺带一提,如果一个变量是保存数值类型,而非字符串,该函数会把变量保存的数值解释成字符串。



2. getc函数


 getc函数的参数只有一个,就是文件句柄,如果要从标准输入流读入,就使用STDIN。该函数返回读取的字节,要注意的是,如果读取的是文件流,则在EOF处函数返回空字符串,即'';如果读取标准输入流,则会一直阻塞。


3.拼接字符串


 使用join函数可以拼接各个字符串,签名为join(delmiter, list)。其中delimiter是一个分隔字符串,在拼接结果中各个分离字符串以该delimiter分隔;list则是各个分离的字符串,也可以是一个保存着若干字符串的数组。

$str1 = "stringA" ;  $str2 = "stringB";
  $combine = join '::' , $str1 , $str2 ;  #$combine值为::stringA::stringB
  @list1 = ( $str1 , $str2 );  @list2 = qw ( stringC  stringD );
  $combine = join '_' , @list1 , @list2 , $str1 ;  #$combine值为_stringA_stringB_stringC_stringD_stringA


 分隔符使用"\n"时,就可以拼接成垂直列表了。


4.分割字符串


 使用split函数进行字符串分割。


 split(delimiter , string , count)


 delimiter是分隔符,默认是空格(以tab,空格等进行分割)


 string是被分割的字符串,不指定该参数时,对$_进行分割


 count允许分割的最大份数,当实际可以分割的份数超过该值时,第count份子串将保存剩余的字符串


 函数返回一个数组,里面保存分割的所有字串


5.重复拼接字符串


 Perl中的 x 操作符,注意操作数必须左边可解析成字符串,右边可解析成数值。

$str1 = "abc";
    $str2 = $str1 x 5;   # $str2的值为 "abcabcabcabcabc"


6.字串替换

 substr(string, offset, length):


 string:原字符串 ,


offset:字串所在原字符串中的起始位置 ,


length:字串长度


 该函数有两种用法:


   1)获取子串 substr($str,I,J);取得$str中第I+1个字符开始的J个字符。

 

$str = "abcdefghijk";
        $sstr = substr( $str , 5 , 3 );   # $sstr的值为"fgh"


   2)替换子串 作为左值,将替换第I+1个字符开始的J个字符。

 

$str = "1234567890";
      substr( $str , 4 ,  3) = "xxxxx" ; # $str的值为"1234xxxxx890"

     函数的第三个参数指定的是被替换子串的长度,因此不影响新替换的字串的长度



目录
相关文章
|
Windows
Anaconda卸载与重装过程记录
本文记录了博主Anaconda卸载与重装过程记录,此为博主电脑环境发生变化,无奈之举,希望对大家有所帮助
2768 0
Anaconda卸载与重装过程记录
|
测试技术
流媒体服务器性能测试
Hello!大家好,我是资深测试工程师Jackie,今天我来和大家一起对云视睿博的高性能流媒体服务器NTV Media Server G3做一次性能测试。 该测试流程,可以作为参照测试流程用于测试流媒体服务器性能。
6476 0
|
11月前
|
自动驾驶 物联网 5G
|
9月前
|
前端开发 UED 开发者
React 滚动监听 Scroll Listener
本文介绍React中实现滚动监听的方法,涵盖基本概念、常见问题及解决方案。通过监听`window`对象的`scroll`事件,开发者可以在用户滚动时触发自定义逻辑。文章详细探讨了冗余调用、组件卸载时未清理事件监听器、滚动位置不一致等常见问题,并提供了防抖、节流、保存滚动位置等解决方案。同时,强调了跨浏览器兼容性和性能优化的重要性,帮助开发者在实际项目中更好地实现滚动监听功能。
230 17
|
12月前
|
机器学习/深度学习 人工智能 算法
【AI系统】AI 框架与编译器的作用
AI框架如PyTorch和TensorFlow提供丰富的API,简化神经网络模型的实现与训练,抽象硬件操作并自动管理内存。AI编译器将高级语言编写的模型转换为硬件可执行代码,通过多层次优化提升性能。这使得算法工程师可以专注于模型设计与创新,而无需关注底层计算细节。AI框架和编译器不仅提高开发效率,还能充分利用硬件资源,是推动AI系统性能提升的关键技术。访问昇腾社区官网或下载APP,获取更多AI学习资源和参与各类活动。
391 0
|
边缘计算 运维 5G
|
C语言
扫雷游戏的实现(上)
扫雷游戏的实现
148 0
|
搜索推荐 物联网 5G
|
机器学习/深度学习 人工智能 自然语言处理
【Pytorch神经网络理论篇】 38 Transformers:安装说明+应用结构+AutoModel类
transfomersF中包括自然语言理解和自然语言生成两大类任务,提供了先进的通用架构,其中有超2个预训练模型(细分为100多种语言的版本)。
2027 0