perl - 保留字符串中的前三个单词

时间:2014-04-23 10:29:23

标签: perl

我正在尝试从字符串中删除最后几个单词以减少string.consider下面的示例字符串的长度。

my $str = "Today is Wednesday April 23 2014";
print substr( $str, 0, rindex( $str, ' ' ) - index($str, ' ') -4 );

字符串的值有所不同,基本上我想保留前3个单词,换句话说删除最后3个单词。

我知道通过我的方法,我没有以有效的方式做,我希望得到专家的意见,以更有效的方式做到这一点。

我希望我的输出只有前三个字Today is Wednesday

3 个答案:

答案 0 :(得分:1)

您可以将字符串拆分为单词,然后返回前三个:

my $str = "Today is Wednesday April 23 2014";
my @first_three = (split ' ', $str)[0 .. 2];
print "@first_three\n";

答案 1 :(得分:1)

my $str = "Today is Wednesday April 23 2014";
print join ' ', (split /\s+/, $str)[0..2];

答案 2 :(得分:0)

大概你有一个你需要遵守的角色限制,而不是只想要每个字符串的前三个单词。否则就像

这样的字符串
I am a spectacular Perl programmer of the very best kind

将被截断为

I am a

鉴于你的示例字符串并假设字符数限制为22,你可以写这样的东西。它匹配最多22个字符的初始字符串,其限制是字符串必须以空格字符或对象文本末尾之前的非空格字符结尾

use strict;
use warnings;

my $str = "Today is Wednesday April 23 2014";

my ($abbrev) = $str =~ /^(.{0,22})(?<=\S)(?=\s|$)/;

print $abbrev;

<强>输出

Today is Wednesday
相关问题