Perl函数:字符串相关函数
Perl字符串相关函数
字符串的内置函数有:
chomp, chop, chr, crypt, fc, hex, index, lc, lcfirst, length, oct,
ord, pack, q//, qq//, reverse, rindex, sprintf, substr, tr///, uc, ucfirst, y///
分为几类:
- 字符大小写转换类:
- 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.修改字符串
$str="abnc";
print chop $str; # 输出c
print $str; # 输出abn
2.修改hash
%myhash=(name => "malongshuai",
prov => "jiangxi",
sch => "linchuan"
);
$choped = chop %myhash;
while(($key,$value) = each %myhash){
print $key,":","$value\n";
}
print "=" x 9,"\n";
print "$choped";
执行返回:
prov:jiangx
sch:linchua
name:malongshua
=========
i
3.修改列表
@list=qw(aaa bbb ccc ddd);
chop @list; # 返回aa bb cc dd
print "@list";
reverse
reverse用于反转列表、标量字符串、hash。
- 反转列表时,将返回反序的列表
- 当放在标量上下文时,将做字符串反转
- 当反转hash时,将把value反转成key,所以当value有重复值时,反转时会丢弃一部分键值
- reverse不是作用在原始内容上的,而是通过返回值返回反转结果
反转列表:将元素反转
@arr=qw(abc def ghi);
@arr=reverse @arr;
print "@arr"; # 输出(ghi def abc)
print join(",",reverse "hello","world") ; # 输出:world,hello
标量上下文下:串联各元素得到一个标量,然后反转这个标量,即使反转目标是列表
@arr=qw(aA bB cC dD );
print scalar reverse @arr; # 输出:DdCcBbAa
print "\n";
print @arr; # 输出:aAbBcCdD
反转字符串:
print scalar reverse "hello"; # 输出olleh
反转hash:会把value反转成key,所以value重复时,将丢弃一部分键值
%arr=qw(aA bB cC dD );
%arr1=reverse %arr;
while(($key,$value)=each %arr1){
print "$key -> ","$value","\n";
}
执行结果:
dD -> cC
bB -> aA
substr
用于从给定字符串中提取出一段子字符串。
用法:
substr STRING,OFFSET,LENGTH,REPLACEMENT
substr STRING,OFFSET,LENGTH
substr STRING,OFFSET
其中:
- offset从0开始计算
- offset为负数时,表示从尾部位移(从-1开始计算)往前位移
- length如果忽略,则从offset处开始取到最尾部
- length为负数时,length则表示从后往前的位移位置,所以将提取从offset到length处的子串
- replacement替换string中提取出来的字串。需要注意两点:
- 加了replacement,将返回提取的子串
- 但源字符串STRING已被替换
use 5.010;
$str="love your everything";
say substr $str,5; # 输出:your everything
say substr $str,-10; # 从后往前取:everything
say substr $str,5,4; # 从前往后取4个字符:your
say substr $str,5,-3; # 从位移5取到位移-3(从后往前算):your everyth
say substr $str,5,4,"fairy's"; # 替换源字符串,但返回提取子串:your
say $str; # 源字符串已被替换:love fairy's everything
可以将substr函数作为左值(lvalue),这样可以修改源变量,就像给了replacement参数一样:
use 5.010;
$str="love your everything";
substr($str,5,4) = "fairy's";
say $str; # 源字符串已被替换:love fairy's everything
index和rindex
index和rindex用来找出给定字符串中某个子串或某个字符的索引位置。
用法:
(r)index STRING,SUBSTR,POSITION
(r)index STRDING,SUBSTR
- index用于搜索STRING中第一次出现SUBSTR的位置,rindex则搜索最后一次出现的SUBSTR位置
- 如果省略position,则从起始位置(从0开始计算)开始搜索第一次出现的子串
- 给定position,则从position处开始搜索,如果是rindex,则是找position左边的
- 如果STRING中找不到SUBSTR,则返回-1
use 5.010;
$str="love you and your everything";
say index $str,"you"; # 输出:5
say index $str,"yours"; # 输出:-1
say index $str,"you",136; # 输出:-1
say index $str,"you",6; # 从offset=6之后搜索,输出:13
say rindex $str,"you"; # 输出:13
say rindex $str,"you",10; # 找出offset=10左边的最后一个you,输出:5
length
用于返回字符串的字符数量,不是字节数。如果是字节数,则采用unicode模块。
下面的例子中,将输出11。
$str="hello world";
print length $str;
length不能直接作用于数组和hash来统计元素个数。想要统计个数:
- 对于数组,直接将其放在标量上下文即可
- 对于hash,可使用keys函数返回hash键,然后放进标量上下文
# 数组元素个数
@arr=qw(aaa bbb ccc ddddd eee ff);
print scalar @arr; # 输出6
# hash元素个数
%myhash=qw(aaa bbb ccc ddddd eee ff);
print scalar keys %myhash;
如果length的对象未定义,则返回undef。如果length的对象没有字符但已定义,则返回0。
Perl函数:字符串相关函数的更多相关文章
- db2字符串相关函数的使用
db2字符串相关函数的使用 from :internet 一.字符转换函数 1.ASCII() 返回字符表达式最左端字符的ASCII 码值.在ASCII()函数中,纯数字的字符串可不用‘’括起来 ...
- Linux下常用函数-字符串函数
inux下常用函数-字符串函数 atof(将字符串转换成浮点型数) 相关函数 atoi,atol,strtod,strtol,strtoul 表头文件 #include <stdlib ...
- 【转载】Perl中字符串编码的处理
在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编 ...
- javascript函数一共可分为五类: ·常规函数 ·数组函数 ·日期函数 ·数学函数 ·字符串函数
javascript函数一共可分为五类: ·常规函数 ·数组函数 ·日期函数 ·数学函数 ·字符串函数 1.常规函数 javascript常规函数包括以下9个 ...
- Sass函数--字符串函数
Sass的函数简介在 Sass 中除了可以定义变量,具有 @extend.%placeholder 和 mixins 等特性之外,还自备了一系列的函数功能.其主要包括: ● 字符串函数 ● 数字函数 ...
- 在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编
在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编 ...
- ylb:SQLServer常用系统函数-字符串函数、配置函数、系统统计函数
原文:ylb:SQLServer常用系统函数-字符串函数.配置函数.系统统计函数 ylbtech-SQL Server:SQL Server-SQLServer常用系统函数 -- ========== ...
- Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助
Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助 目录 Pychar ...
- mssql 系统函数-字符串函数专题--字符串函数大全
mssql 系统函数 字符串函数 substring 功能简介 mssql 系统函数 字符串函数 stuff 功能简介 mssql 系统函数 字符串函数 str 功能简介 mssql 系统函数 字符串 ...
随机推荐
- 软件光栅器实现(二、VS和PS的运作,法线贴图,切空间的计算)
二.软件光栅器的VS和PS的输入.输出和运作,实现法线贴图效果的版本.转载请注明出处. 这里介绍的VS和PS是实现法线映射的版本,本文仅介绍实现思路,并给出代码供参考.切空间计算.光照模型等相关公式不 ...
- Linux 目录结构详解
Linux目录详解 Linux目录详解(RHEL5.4) 由于linux是开放源代码,各大公司和团体根据linux的核心代码做各自的操作,编程.这样就造成在根下的目录的不同.这样就造成个人不能使用他人 ...
- 自定义react-navigation的TabBar
在某些情况下,默认的react-navigation的tab bar无法满足开发者的要求.这个时候就需要自定义一个tab bar了.本文就基于react-navigtion v2来演示如何实现一个自定 ...
- TYVJ1424-占卜DIY
题目有点长,对于样例最好拿张A4纸模拟写一遍. 可以发现程序一定不会死循环,因为每种牌都是4张,而死循环的条件是某种牌有5张然后你拿了又放进去.如果写出来死循环了,那就是写不对了. 有几点可能是需要注 ...
- [ 10.4 ]CF每日一题系列—— 486C
Description: 给你一个指针,可以左右移动,指向的小写字母可以,改变,但都是有花费的a - b 和 a - z花费1,指针移动也要花费,一个单位花费1,问你把当前字符串变成回文串的最小化费是 ...
- Android-引导用户指纹录入
根据不同的手机,跳转到指纹录入界面,如果没有检测到手机的品牌,就提醒用户手动去指纹录入: 首先描述手机信息检测对象,PhoneInfoCheck.java: package com.esandinfo ...
- IDEA环境下GIT操作浅析之一Idea下仓库初始化与文件提交涉及到的基本命令
目标总括 idea 下通过命令操作文件提交,删除,与更新并推送到github 开源库基本操作idea 下通过命令实现分支的创建与合并操作 idea 下通过图形化方式实现idea 项目版本控制基本操作 ...
- 网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接
本文原作者:“水晶虾饺”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.引言 好多小白初次接触即时通讯(比如:IM或者消息推送应用)时,总是不 ...
- Java程序员的成长之路
阅读本文大概需要 8.2 分钟. tips:虽然题目是写的Java程序员,但对其他语言的开发来说也会有借鉴作用. 本篇介绍的是大体思路,以及每个节点所需要学习的书籍内容,如果大家对详细的技术点有需要, ...
- Python学习笔记【第九篇】:Python面向对象基础
Python语言中一切皆对象(类.属性.方法.........) 概念 面向对象编程:Object Oriented Programming 简称OOP 面向对象程序设计 面向对象和面向过程都是解决问 ...