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)获取子串


代码如下:

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

2)替换子串


代码如下:

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

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

(0)

相关推荐

  • Perl字符串处理函数大全

    下面请看本文详细介绍. Perl字符串处理函数 1. index 语法: position=index(string,substring,position); 语义: 返回子串substring在字符串string中的位置,如果不存在则返回-1. 参数position是可选项,表示匹配之前跳过的字符数,或者说从该位置开始匹配. 2. rindex 语法: position=rindex(string,substring,position); 语义: 与index类似,区别是从右端匹配. 3. l

  • Perl 字符串处理备忘录

    1. chop和chomp函数 两个函数都以字符串作为参数,并去除其末尾最后一个字符.区别是,无论最后一个字符是什么,chop都会去除,并在返回值中返回:而仅当字符串最后一个字符与特殊变量$/保存的字符一样时,chomp才会将其去除.默认情况下$/保存换行字符,当然可以重设. 1)如果函数参数是一个字符串数组,那么函数会分别对数组中的每个元素调用. 2)如果函数参数是一个符合列表(即列表中还有其他列表或HASH表),则可以认为保存在参数列表中的是每个复合容器的地址(指针),而此时chop会将地址

  • Perl字符串比较和整数比较的区别详解

    本文向大家介绍一下Perl字符串比较和整数比较. Perl语言中Perl字符串可分为单引号和双引号字符串,那么如何进行Perl字符串比较呢, 请看本文详细介绍: 本文和大家重点讨论一下Perl字符串比较和整数比较, 算术运算符的比较有大于,小于,等于,不等于等关系, 而Perl字符串比较也不例外, 这里向大家详细介绍一下: 一. 字符串比较操作符 操作符 描述 lt 小于 gt 大于 eq 等于 le 小于等于 ge 大于等于 ne 不等于 cmp 比较, 返回1,0,or-1 二. 整数比较操

  • Perl学习基本备忘录

    1.Perl数组(1): 1) 初始化数组 @array = ( "stringA" , "stringB" , "stringC" );2) 使用负索引循环检索 print $array[-1];  #输出索引为(-1 + 3) % 3 = 2 的 stringC3) 动态增长 $array[4] = "stringD"; #虽然$array[3]还没有使用,但在动态赋值$array[4]的使用,已经对$array[3]赋空

  • Perl中的正则表达式介绍

    感谢AKA及作者. Perl 中的正则表达式正则表达式的三种形式 正则表达式中的常用模式 正则表达式的 8 大原则 正则表达式是 Perl 语言的一大特色,也是 Perl 程序中的一点难点,不过如果大家能够很好的掌握他,就可以轻易地用正则表达式来完成字符串处理的任务,当然在 CGI 程序设计中就更能得心应手了.下面我们列出一些正则表达式书写时的一些基本语法规则. 9.1 正则表达式的三种形式首先我们应该知道 Perl 程序中,正则表达式有三种存在形式,他们分别是: 匹配:m/<regexp>;

  • perl 中文处理技巧

    Perl从5.6开始已经开始在内部使用utf8编码来表示字符,也就是说对中文以及其他语言字符的处理应该是完全没有问题的.我们只需要利用好Encode这个模块便能充分发挥Perl的utf8字符的优势了. 下面就以中文文本的处理为例进行说明,比如有一个字符串"测试文本",我们想要把这个中文字符串拆成单个字符,可以这样写: use Encode; $dat="测试文本"; $str=decode("gb2312",$dat); @chars=split

  • perl 文件操作总结

    一.打开.关闭文件 open的返回值用来确定打开文件的操作是否成功,当其成功时返回非零值,失败时返回零,因此可以如下判断:    if (open(MYFILE, "myfile"))     {        # here is what to do if the file opened successfully    }    当文件操作完毕后,用close(MYFILE); 关闭文件.    读:open(文件句柄,"<文件名")  open(文件句柄,

  • Perl split字符串分割函数用法指南

    本文和大家重点讨论一下Perl split函数的用法,Perl中的一个非常有用的函数是Perl split函数-把字符串进行分割并把分割后的结果放入数组中.这个Perl split函数使用规则表达式(RE),如果未特定则工作在$_变量上. Perl split函数 Perl中的一个非常有用的函数是Perl split函数-把字符串进行分割并把分割后的结果放入数组中.这个Perl split函数使用规则表达式(RE),如果未特定则工作在$_变量上. Perl split函数可以这样使用: 复制代码

  • perl中的字符串操作函数chomp与chop介绍

    chomp与chop都是用于去除字符串变量尾部的字符,但它们有各自的区别. chomp函数对变量起作用,而此变量含有字符串.如果字符串结尾有换行符,chomp可以去掉它.这基本上就是它能完成的所有功能,如下例: 复制代码 代码如下: $text="alineoftext\n      "; #也可以由<STDIN>输入 chomp($text);    #去掉换行符(\n). 它非常有用,基本上你的每一个程序都会用到它.如你将知道,这是将字符串末尾换行符去掉的最好方法.基于

  • 利用perl、python、php、shell、sed、awk、c 实现字符串的翻转

    原题: Q:有a.txt文件,里面内容如下 1234569 abcABCabc 要求使用awk打印出以下结果 987654321 cbaCBAcba A: shell  :[root@vps tmp]# rev a.txt 9654321 cbaCBAcbaperl : [root@vps tmp]# perl -nle 'print scalar reverse $_;' a.txt 9654321 cbaCBAcbaawk: [root@vps tmp]# awk '{num=split($

随机推荐