Perl字符串基本操作详解
来源:互联网 发布:centos 权限不够 编辑:程序博客网 时间:2024/06/08 06:05
http://developer.51cto.com/art/201007/211543.htm
◆Perl字符串中length取串长(字符数量)
</pre><p><pre name="code" class="html">#!/usr/bin/Perl$str="abCD99e";$strlen=length($str);print$strlen,"\n";[macg@localhostPerltest]$./tip.pl7
◆substr串,位置,长度-------取子串,注意从0开始数位置
<pre name="code" class="html">#!/usr/bin/Perl$str="ABCDEFG1234567";$a=substr$str,0,5;print$a,"\n";[macg@localhostPerltest]$./tip.plABCDE$a=substr$str,-4,2;从倒数第4个开始,取两个字符[macg@localhostPerltest]$./tip.pl45
◆index在字串中找尋某一子字串的起始位置
<pre name="code" class="html">#!/usr/bin/Perl$str="ABCDEFG1234567";$a="12";$pos=index($str,$a);print$pos,"\n";[macg@localhostPerltest]$./tip.pl7
@数组=split(pattern,串)将Perl字符串用某模式分成多个单词
<pre name="code" class="html">#!/usr/bin/Perl$str="ABCDEiFG12i34567";@array=split(//,$str);按空格分foreach(@array){print$_,"\n";}[macg@localhostPerltest]$./tip.plABCDEiFG12i34567
@array=split(/+/,$line);当一行中各单词间的空格多于一个时
◆空格和TAB混杂情况下的split
[macg@localhostPerltest]$vitip.pl#!/usr/bin/Perl$str="ABCDEiFG12i34567";@array=split(/\t/,$str);foreach(@array){print$_,"\n";}[macg@localhostPerltest]$./tip.plABCDEiFG12i34567只分了两份,为什么?因为同时满足TAB和空格的只有一处所以必须加[]@array=split(/[\t]/,$str);现在才是真正的按空格和TAB分[macg@localhostPerltest]$./tip.plABCDEiFG12i34567
但还是有缺陷,TAB和空格相连时,TAB被认为是空格划分的子串,或者空格被认为是TAB划分的子串
◆用join定义Perl字符串数组格式符号(缺省是,)必须与qw()合用
语法:join($string,@array)
@array=qw(onetwothree);
$total="one,two,three";
@array=qw(onetwothree);
$total=join(":",@array);
$total="one:two:three";
数组内grep
@array=("one","on","in");
$count=grep(/on/,@array);
查询结果赋值给单变量
@array=("one","on","in");
@result=grep(/on/,@array);
查询结果赋值给数组
2
one
on
本文和大家重点讨论一下Perl字符串的一些基本操作,比如Perl字符串数组元素赋值:@tmp=qw(aaabbbkkk9000);相当于@tmp=(“aaa”,“bbb”,“kkk”,“9000)。至于其他操作请看本文详细介绍。
Perl字符串操作
Perl字符串数组元素赋值:@tmp=qw(aaabbbkkk9000);相当于@tmp=(“aaa”,“bbb”,“kkk”,“9000);
◆Perl字符串比较,绝不能用==,要用eq
[macg@localhostPerltest]$vitip.pl#!/usr/bin/Perlprint"input:";while(chomp($input=<>)){print"yourinputis$input\n";if($input=="q"){print"chooseq\n";last;}elsif($input=='n'){print"inputis$input\n";next;}else{print"inputok,tryagain\n";}print"input:";}[macg@localhostPerltest]$./tip.plinput:xyourinputisxchooseq
◆Perl字符串用==是最常犯的错误
即使是整形,也尽量用eq,少用==
while(chomp($input=<STDIN>))
{
for($i=1,$found=0;$i<=$int_num;$i++)
{
if($input==$i){$found=1;}
else
Doyouwanttochangeeth0:2'sipaddress?回车
Argument""isn'tnumericinnumericeq(==)at./address.plline77,<STDIN>line2.
对整形变量$input==$i,如果$input是回车,并不走else,而是报错
正确的做法是:不论整形Perl字符串,都用eq
while(chomp($input=<STDIN>))
{
for($i=1,$found=0;$i<=$int_num;$i++)
{
if($inputeq$i){$found=1;}
}
whichinterfaceyouwanttoconfig?choiceanumber1234q:1
Doyouwanttochangeeth0'sipaddress?
◆Perl字符串几种连接运算符
运算符,常用于输出
print"純金",$v1;
print$str,"\n\n";
.运算符和,类似也是Perl字符串相加但,通常只用于print而.可以用在任何Perl字符串相加的地方
print'12345大家來跳舞'."helloworld";
結果變成:
12345大家來跳舞helloworld
x运算符号
print"OK"x4;
結果變成:
OKOKOKOK
◆为什么Perl字符串相加只能用.不能用+
因为可能+就是真加了(数字相加),而不是Perl字符串合并
$v1=99;$v2='121';print$v1+$v2;$v1=99;$v2='121';print$v2.$v1;22012199
◆Perl字符串的连接可以连接整形和字符形,整形也被当作字符型处理,没有printf里的%d问题
$min=1;
$date="date"."0".$min; # use "." to joint string
print$date,"\n";
[root@ntrackermac]#./tip.pl
date01
uc轉成大寫,lc轉成小寫
$str="abCD99e";$str=uc($str);$str="abCD99e";$str=lc($str);[macg@localhostPerltest]$./tip.plABCD99E[macg@localhostPerltest]$./tip.plabcd99e
- Perl字符串基本操作详解
- Perl字符串基本操作详解
- perl 字符串基本操作
- perl 基本操作
- perl 字符串操作
- Perl的字符串操作
- perl 字符串操作
- perl 字符串相关操作
- perl字符串操作符
- perl中操作符详解
- 关于Perl几个基本操作的Demo
- Perl 字符串操作 以及 自定义排序
- Bash基本字符串操作
- 字符串基本操作
- 字符串基本操作
- 字符串的基本操作
- 字符串基本操作
- 字符串基本操作
- 二叉树的递归和非递归遍历
- boost库中thread多线程详解2——mutex与lock
- eclipse设置智能提示
- hdu 2688 Rotate 树状数组
- web 前端MVC理念的核心思想
- Perl字符串基本操作详解
- boost库中thread多线程详解3——细说lock_guard
- IOS 百度社会化分享注意点
- 【Boost】boost库中thread多线程详解4——谈谈recursive_mutex(递归式互斥量)
- 点击某一个cell改变单个cell的高度
- window下安装adb
- 生活的智慧
- boost库中thread多线程详解5——谈谈线程中断
- 向Tiny210移植Debian Linux