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

$info="Caine:Michael:Actor:14,LeafyDrive";
@personal=split(/:/,$info);  

其结果是:@personal=(“Caine”,”Michael”,”Actor”,”14,LeafyDrive”);
如果我们已经把信息存放在$_变量中,那么可以这样:

@personal=split(/:/);

如果各个域被任何数量的冒号分隔,可以用RE代码进行分割:

$_="Capes:Geoff::Shotputter:::BigAvenue";
@personal=split(/:+/);  

其结果是:@personal=(“Capes”,”Geoff”,”Shotputter”,”BigAvenue”);
但是下面的代码:

$_="Capes:Geoff::Shotputter:::BigAvenue";
@personal=split(/:/); 

的结果是:@personal=(“Capes”,”Geoff”,”“,”Shotputter”,”“,”“,”BigAvenue”);

这个Perl split函数中单词可以被分割成字符,句子可以被分割成单词,段落可以被分割成句子:

@chars=split(//,$word);
@words=split(//,$sentence);
@sentences=split(/\./,$paragraph);  

在第一句中,空字符串在每个字符间匹配,所以@chars数组是一个字符的数组。
//之间的部分表示split用到的正则表达式(或者说分隔法则)
\s是一种通配符,代表空格
+代表重复一次或者一次以上。
所以,\s+代表一个或者一个以上的空格。
split(/\s+/,line)表示把字符串line)表示把字符串line,按空格为界分开。

在perl手册里,有一个用法不多见。即: split /PATTERN/, EXPR, LIMIT; 关键就是这个LIMIT参数,可以节省不少事情。 如果使用了LIMIT,且是正数,表示分割成不多于LIMIT指定的数目的域。If LIMIT is unspecified or zero, trailing null fields are stripped (which potential users of pop would do well to remember). If LIMIT is negative, it is treated as if an arbitrarily large LIMIT had been specified. Note that splitting an EXPR that evaluates to the empty string always returns the empty list, regardless of the LIMIT specified.
通过制定LIMIT,可以在很长(分割产生几万个元素or域)的行分割操作中,只返回关键的前几列的域值,减少了内存使用及时间消耗。比如一般的基因型数据,第一列通常是材料命名,需要通过材料名的判断取舍,这时候就可以这样用。

my ($firstfield) = split /\t/, $someline, 1;  

如果需要前面几列的值,这样的方式对大文件效率很好:

my (undef, $var1, undef, undef, undef, $var2)=split /\t/, $someline, 6;

有网友对这种方式做了测试,显示较好。引用如下:
一个文件,每行都有18项,各项之间用\t分割,使用时用到了第6项,折腾了几种用法

my @array = split("\t",$_); my $var = $array[6];   # 测试文件平均用时8.2s
my($var) = (split("\t",$_))[6];  # 测试平均用时5.1s
my(undef,undef,undef,undef,undef,undef,$var) = split("\t",$_); # 平均用时3.53s
my(undef,undef,undef,undef,undef,undef,$var) = split("\t",$_,7); #平均用时3.52s
my $var = (split("\t",$_,7))[6]; # 平均用时3.53s

看来后3种才是王道,如果需要使用多项也可以进行进行适当的变动。不过两项如果跨度比较大,3,4应该是不错选择,5就只能用中间数组。

Perl split字符串分割函数用法指南相关推荐

  1. Split字符串分割函数

    非常非常常用的一个函数Split字符串分割函数. Dim myTest myTest = "aaa/bbb/ccc/ddd/eee/fff/ggg"Dim arrTest arrT ...

  2. oracle中的分隔函数,Oracle中的split字符串分割函数

    首先需要定义 2 个类型 1. Row 类型 CREATE OR REPLACE TYPE ty_row_str_split as object (strValue VARCHAR2 (4000)) ...

  3. c语言中字符切割函数split,c 语言 指针 C语言字符串分割函数split实现

    c语言也有类似其他语言的split字符串分割函数,就是strtok使用方法如下://用逗号做分隔符,读出内容//char s[] = "123-sldkf-123ls-343434-dfjd ...

  4. c语言将字符串按空格分割_如何在c++中实现字符串分割函数split详解

    前言 在学习c++中string相关基本用法的时候,发现了sstream的istringstream[1]可以将字符串类似于控制台的方式进行输入,而实质上这个行为等同于利用空格将一个字符串进行了分割, ...

  5. php指定长度 分割整形,php指定长度分割字符串str_split函数用法示例

    本文实例讲述了php指定长度分割字符串str_split函数用法.分享给大家供大家参考,具体如下: 示例1:$str = 'abcdefgh'; $arr = str_split($str,2); 运 ...

  6. C++中string如何实现字符串分割函数split()——4种方法

    如: string str1 = "This is a test"; string str2 = "This-is-a-test"; string str2 = ...

  7. PHP字符串分割函数explode,strtok,str_spli的用法

    PHP字符串函数在PHP网站开发中广泛使用,比如使用PHP字符串函数对字符串分割.截取.匹配.替换等处理.PHP字符串函数对于PHP入门学习者来说必不可少,本文将主要介绍PHP字符串分割函数处理心得, ...

  8. C++的字符串分割函数

    转载:http://blog.csdn.net/shanzhizi/article/details/17189267 C++的字符串没有分割函数,因此需要自己写方便使用.而受到开发工具的影响,有很多用 ...

  9. php 字符串分割出数字,php 字符串分割函数的总结

    在php中字符串分割函数有很多很多,下面我来给各位朋友来介绍各种php中字符串分割实例,有需要的朋友可进入参考参考. PHP函数split()的基本语法为 array split ( string $ ...

最新文章

  1. Kaldi不支持Cuda10_1版本
  2. 给你推荐几个 NB 的公众号
  3. Java基础——注解
  4. java实现日期让随动变_java工具类(四)之实现日期随意跳转
  5. 贪吃蛇大作战html5,贪吃蛇大作战5.0.1
  6. 人工智能用python还是java_人工智能选择python还是java语言
  7. linux mysql c语言 api_linux连接MySQL数据库(C语言 API 分析,动态插入修改数据)
  8. Python web —— Selenium 库
  9. 【干货笔记】CS224n-2019 学习笔记 Lecture 01 Introduction and Word Vectors
  10. [HEOI2015]定价 (贪心)
  11. git撤销单个文件的修改_程序员都要掌握的 Git 使用技巧【实践】
  12. matlab 曲面拟合,matlab曲面拟合
  13. w10需要计算机管理员才能删除,如何解决删除文件需要管理员权限win10_win10你需要提供管理员权限才能删除的解决方法...
  14. 从cocos2d-x到unity看游戏研发、设计中一些要点
  15. 服务器开机黑屏无法进入系统,电脑黑屏无法进入系统怎么办?
  16. Laravel打印操作的sql 阿星小栈
  17. 数据库应用——MyCat代理MySQL集群
  18. 不用编程,实现三菱FX5U与罗克韦尔(AB)PLC之间实时通讯
  19. 1. Vue CLI脚手架
  20. 华农计算机科学转专业,转专业门槛有多高? 每8名新生就有一个想转专业

热门文章

  1. mysql做主从复制配置案例
  2. 用Python模拟浏览器操作
  3. poj 3522 Slim Span
  4. ubuntu MySQL安装指南
  5. c# rar解压大小_C#利用WinRAR实现压缩和解压缩
  6. html怎么整体放大,html页面放大时不能铺满整个页面问题
  7. mysql windows软件_windows版MySQL软件的安装
  8. rpm mysql java 驱动_Linux下安装MySQL(rpm方式)
  9. python的线程组怎么写_Python学习——Python线程
  10. 『数据库』怎样设计一个数据库