perl split函数问题,分割串末尾有空数据算不算。$str = 'a \t b \t c \t \t \t';用tab分割存在@str里
@str=split('\t',$str);这个时候@str的大小应该是多少?5?还是3?我这里从程序里提出代码来测试的时候是3可是写到程序里的时候就成5了,特郁闷,有哪...
@str = split('\t', $str); 这个时候@str的大小应该是多少?5 ?还是3 ?
我这里从程序里提出代码来测试的时候是3 可是写到程序里的时候就成5了,特郁闷,有哪位大侠也遇到这类情况么?请问如何解决,谢谢 展开
我这里从程序里提出代码来测试的时候是3 可是写到程序里的时候就成5了,特郁闷,有哪位大侠也遇到这类情况么?请问如何解决,谢谢 展开
展开全部
分割串末尾是完全的空数据的话,split出来的数组长度必然只有3。
但是如果你的末尾有诸如换行符(\n\r\s)等其他字符的话,也就是说table键后面并不是什么都没有话那么分隔出来的必然就是5咯~~~
但是如果你的末尾有诸如换行符(\n\r\s)等其他字符的话,也就是说table键后面并不是什么都没有话那么分隔出来的必然就是5咯~~~
更多追问追答
追问
是这样的,我现在用的是perl 5.86,我自己新写一个小程序测试split的功能时候从输入文件中烤出一字符串,测试显示是不计数的,可是在程序里根据句柄一条一条读入的时候,perl又读了空数据(split前我已经chomp过了,应该没有\n\r的问题),数据结尾没有空格...句柄读入还可能有别的不可见结尾符么?
追答
会不会数据之间而不是数据末尾多了不止一个\t?你用@str = split('\s+', $str);试试看。
展开全部
http://perldoc.perl.org/5.8.8/functions/split.html
Splits the string EXPR into a list of strings and returns that list. By default, empty leading fields are preserved, and empty trailing ones are deleted. (If all fields are empty, they are considered to be trailing.)
另外,关于你的问题
perl -e '$num=split("\t","a123\a123\tjjc\t\t\t\n");print $num;'
5
perl -e '$num=split("\t","a123\a123\tjjc\t\t\t");print $num;'
2
就是因为最后有\n所以才会导致split会拆分中间的几个\t
Splits the string EXPR into a list of strings and returns that list. By default, empty leading fields are preserved, and empty trailing ones are deleted. (If all fields are empty, they are considered to be trailing.)
另外,关于你的问题
perl -e '$num=split("\t","a123\a123\tjjc\t\t\t\n");print $num;'
5
perl -e '$num=split("\t","a123\a123\tjjc\t\t\t");print $num;'
2
就是因为最后有\n所以才会导致split会拆分中间的几个\t
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询