高手请进 求 perl 分隔字符串的方法,其中分隔符不是一种

mazelmiler
高手请进 求 perl 分隔字符串的方法,其中分隔符不是一种

例如 a b c"/t"d"/t"e"/n"f"/n"
分析完后得到如下:
@a 里面有a b c d e f
我试过@a = split(/"/t"|"/r/n"|" "/, $value); 是不行的
在线急等啊

converse
[code]
$text = 'a b c"/t"d"/t"e"/n"f"/n"';
@array = split/ |/"//t"|/"//n"/, $text;
foreach (@array)
{
    print $_, "/n";
}
[/code]

mazelmiler
回复 #2 converse 的帖子

谢谢我的意思是/t代表tab键 /n 代表回车键,但你的这种方法我也试过,不行的哦!还是谢谢您
大家帮我出出主意啊!急啊~~

converse
@array = split//s/, $text;呢?

mazelmiler
回复 #4 converse 的帖子

/s到是接近但是如果例如这样
a 空格空格 b 回车 c 缩进缩进缩进缩进 d 空 e 回车回车 f
这样的话会出现N多空值

mazelmiler
回复 #4 converse 的帖子

如果字符串里面有其他的特殊字符怎么办?现在只需用空格,回车,缩进为分隔符

converse
呃.../s是空格,tab,换行的集合.

mazelmiler
回复 #7 converse 的帖子

哦那我记错了,多谢大师~

mazelmiler
回复 #7 converse 的帖子

在问下大师 perl 里有没有java里例如 eques的方法

mazelmiler
回复 #7 converse 的帖子

因为我在判断$_是否为空时总是出错Use of uninitialized value in numeric eq (==) at readXml.pl line 76.
我是这样写的
foreach (@a){
                     #   print;
                       if($_==undef){
                         print"null";
                         }else{
                          print;
                         }
                         print"/n";
                }
我知道我基本功不扎实,刚接触perl,请大师们见谅

mazelmiler
回复 #7 converse 的帖子

有没有匹配任意多个相连的换行符的方法呢?

mazelmiler
回复 #10 mazelmiler 的帖子

if($defined($_)){
                         print"null";
                         }else{
                          print;
                         }
                         print"/n";
                }
还是不行咧~~

mazelmiler
请教高手 字符串问题

如果字符串全是回车  例如:/n /n /n
用 @a = split(//s/,字符串);
@a中的值是否都是undef呢?还是""呢?如何判断啊,晕了都~

converse
这种情况下,还是找本入门书好好看看,病急乱投医,别人说了你也不一定懂.

ermu
你可以把你需要的那些分隔符替换成单一的字符,比如空格,然后用split吧?

Lonki
[quote]原帖由 [i]mazelmiler[/i] 于 2008-7-3 10:07 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8726068&ptid=1187147][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
/s到是接近但是如果例如这样
a 空格空格 b 回车 c 缩进缩进缩进缩进 d 空 e 回车回车 f
这样的话会出现N多空值 [/quote]

my @words = split //s+/, $str;

另外, 如果你要提取的字符比较规律的话, 可以考虑正则:
类似my @words = $str =~ //w+/g;

mazelmiler
回复 #16 Lonki 的帖子

多谢您!

cdkrr
你有 eq 代替==。

cdkrr
[quote]原帖由 [i]mazelmiler[/i] 于 2008-7-3 10:24 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8726236&ptid=1187147][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
因为我在判断$_是否为空时总是出错Use of uninitialized value in numeric eq (==) at readXml.pl line 76.
我是这样写的
foreach (@a){
                     #   print;
                       if($_==u ... [/quote]
用eq 代替== 应该就可以了。