当前位置:  开发笔记 > 编程语言 > 正文

如何在Perl中将人的全名解析为用户名?

如何解决《如何在Perl中将人的全名解析为用户名?》经验,为你挑选了2个好方法。

我需要将Parisi,Kenneth格式的名称转换为kparisi格式.

有谁知道如何在Perl中这样做?

以下是一些异常的示例数据:

Zelleb,Charles F.,, IV
Eilt,John ,, IV Wods,
Charles R.,, III
Welkt,Craig P.,, Jr.

这些特定的名称最终应该是czelleb,jeilt,cwoods,cwelkt等.


我还有一个条件正在破坏我的名字建设者

奥尼尔,保罗

到目前为止,当奇怪/腐败的名字在混合中时,Vinko Vrsalovic的答案是最好的,但上面的这个例子将作为"pneil"出现......如果我不能在p和n之间得到那个,那么我会被判断为低于犹大



1> Vinko Vrsalo..:
vinko@parrot:~$ cat genlogname.pl
use strict;
use warnings;

my @list;
push @list, "Zelleb, Charles F.,,IV";
push @list, "Eilt, John,, IV";
push @list, "Woods, Charles R.,,III";
push @list, "Welkt, Craig P.,,Jr.";

for my $name (@list) {
        print gen_logname($name)."\n";
}

sub gen_logname {
        my $n = shift;
        #Filter out unneeded characters
        $n =~ s/['-]//g;
        #This regex will grab the lastname a comma, optionally a space (the 
        #optional space is my addition) and the first char of the name, 
        #which seems to satisfy your condition
        $n =~ m/(\w+), ?(.)/;
        return lc($2.$1);
}
vinko@parrot:~$ perl genlogname.pl
czelleb
jeilt
cwoods
cwelkt



2> Brian Rasmus..:

我将从过滤异常数据开始,因此您只有常规名称.那么这样的事情应该可以解决问题

$t = "Parisi, Kenneth";
$t =~ s/(.+),\s*(.).*/\l$2\l$1/;

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有