gpt4 book ai didi

regex - 处理单个和多个单词字符串

转载 作者:行者123 更新时间:2023-12-02 05:49:42 26 4
gpt4 key购买 nike

我有一个包含许多名字的数组:

Fred Smith
Dave Davidson
John
Andy Wood
Robin van Persie

foreach my $name ( @arrayOfNames ) {
my ($first, $last) = $name =~ /(.*)\s+(.).*/;
print "$first$last";
}

使用上面显示的 foreach 循环应该打印以下内容:

FredS
DavidD
John
AndyW
RobinvP

但是,它不能正确处理一个词的名字 (John) 或两个以上的词的名字 (Robin van Persie):

对于一个单词名称 (John),我得到如下所示的错误

Use of uninitialized value $first in concatenation...
Use of uninitialized value $last in concatenation...

对于两个以上的单词名称 (Robin van Persie),它打印 Robin vanP 而不是 RobinvP

应该如何更改以适应这些一个词和两个以上词的名称?是否应该将一个词和两个以上的词名称移到一个新数组中,然后在以后处理,或者是否可以更改正则表达式来满足这种情况?

最佳答案

您可以使用 split而不是使用正则表达式将名字与其他名称分开:

my ($first, @rest) = split;

然后 substrmap 内提取首字母:

my @initials = map { substr $_, 0, 1 } @rest;

然后 join他们在一起:

join '', $first, @initials;

综合起来:

for (@arrayOfNames) {
my ($first, @rest) = split;
print join '', $first, map { substr $_, 0, 1 } @rest;
}

关于regex - 处理单个和多个单词字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24324216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com