我正在阅读有一些名称不一致的文本文件。比如我有这样的名字:是否有更简单的方法来修复名称后缀?
MILLER, WALTER MCNAB IV
DUPONT, THOMAS B. II
HARDEWAY, GRANT U. SR.
正如你看到的,我可以通过姓氏和名字不过后缀放置不当分裂名。理想的名字应该是:
WALTER MCNAB MILLER IV
THOMAS B. DUPONT II
GRANT U. HARDEWAY SR.
这就是说,这是我有,但我觉得我的过于复杂的事情简单。有小费吗?
private function extractFullName($name){
//I cant do V since V could be someone's middle initial also :(
$suffix = collect(['II', 'III', 'IV', 'JR.', 'SR.']);
// lets first assemble a full name from the row
$fullNameArray = explode(",", $name);
$firstName=trim($fullNameArray[1]);
$lastName=trim($fullNameArray[0]);
//lets look at the FIRST NAME for II/III/IV/JR./SR.
$suffix = $suffix->each(function ($item, $key) use ($firstName, $lastName) {
if (strpos($firstName, " ".$item)){
$firstName = preg_replace('/'.$item.'$/', '', $firstName);
$lastName.=' '.$item;
return false;
}
});
//Basically arranging it in a 'firstname lastname II/III/IV/JR./SR.' format
$name = $firstName." ".$lastName);
$name = ucwords(strtolower($lawyerName));
return $name;
}
我正在投票结束这个问题,因为它属于http://codereview.stackexchange.com/,因为你在问如何改进它,而不是解决问题。 –
http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ <制作关于名字的假设是在不稳固的地面上行走> https://en.wikipedia.org/wiki/ Prince_(音乐家) – CD001