Пример в JavaScript, предполагая нехватку места перед Последним в третьем примере является опечаткой:
var testStrings = [
'First_name Middle_name Last_name',
'first_name middle_name last_name',
'First_name-Middle_name Last_name',
'first_name-middle_name last_name'
];
var re = /\b(\w)\w*\b(-?)\s*/g;
var mr;
for (var i = 0, l = testStrings.length; i < l; i++)
{
var name = testStrings[i];
var abbr = name.replace(re, function (match, ini, dash)
{
return ini.toUpperCase() + dash;
});
alert(abbr);
}
Должно быть легко (?) Адаптироваться к другим языкам.