加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Perl中,如何将所有换行符转换为字符串中的空格?

发布时间:2020-12-15 23:31:18 所属栏目:大数据 来源:网络整理
导读:是否有任何函数可用于将字符串中的所有换行符转换为空格? 例如: $a = "dflsdgjsdgdsfsd gf sgd g sdgsdfgsd"; 我要找的结果是: $a = "dflsdgjsdg dsfsd gf sgd g sdg sdf gsd" 解决方法 我建议限制使用$a和$b来排序例程. 对于你的问题,tr ///比s ///更合
是否有任何函数可用于将字符串中的所有换行符转换为空格?

例如:

$a = "dflsdgjsdg
dsfsd 
gf 
sgd 
g  
sdg
sdf
gsd";

我要找的结果是:

$a = "dflsdgjsdg dsfsd gf sgd g sdg sdf gsd"

解决方法

我建议限制使用$a和$b来排序例程.

对于你的问题,tr ///比s ///更合适:

#!/usr/bin/perl

use strict;
use warnings;

my $x = q{dflsdgjsdg
dsfsd
gf
sgd
g
sdg
sdf
gsd};

$x =~ tr{n}{ };

print $x,"n";
__END__

输出:

C:Temp> ttt
dflsdgjsdg dsfsd gf sgd g sdg sdf gsd

更新:我不认为TMTOWTDI在这里使用除了tr ///以外的任何东西是合理的.首先,在语义上,OP要求的是音译,因此使用音译是有意义的.其次,至少在我的带有5.10的Windows XP笔记本电脑上,基准模块提供了明显的对比:

#!/usr/bin/perl

use strict;
use warnings;

use Benchmark qw( cmpthese );

use constant LONG_STRING => "n" x 1_000_000;

cmpthese -10,{
    subst => sub {
        my $x = LONG_STRING;
        $x =~ s{n}{ }g;
        return;
    },split_join => sub {
        my $x = LONG_STRING;
        $x = join ' ',split /n/,$x;
        return;
    },tr => sub {
        my $x = LONG_STRING;
        $x =~ tr{n}{ };
        return;
    },nop => sub {
        my $x = LONG_STRING;
        return;
    }
};
__END__

结果:

Rate split_join      subst         tr        nop
split_join 0.354/s         --       -85%      -100%      -100%
subst       2.40/s       578%         --       -99%      -100%
tr           250/s     70514%     10320%         --       -92%
nop         3025/s    854076%    125942%      1110%         --

还有一个更新:我应该指出tr ///到s ///的相对性能取决于源字符串的大小和组成.我在这里选择插图的情况绝对是极端的.使用不太极端的输入字符串,性能比似乎接近15:1而不是100:1

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读