My code in unable to split hyphen. PLease have a look to my statement if I am wrong here.
trigger ACCOUNT_AFTER_INSUPD_NAME on Account (before insert , before update) {
/*List<Account> acc = new List<Account>();
acc = [SELECT Id,FirstName,LastName,Middle_vod__c FROM Account WHERE Id IN: Trigger.oldMap.keySet() LIMIT 1];*/
for(Account a: trigger.new)
{
if(a.Ispersonaccount==true)
{
String f = a.FirstName;
List<String> FName= f.split(' ');
for(Integer i=0;i<FName.size();i++)
{
FName[i] = (FName[i].substring(0,1)).toUppercase() +(FName[i].substring(1,FName[i].length()).toLowercase());
if(i>0)
{
a.FirstName=a.FirstName+' '+FName[i];
}
else a.FirstName=FName[i];
}
String m = a.Middle_vod__c;
if(m != null){
List<String> MName= m.split(' ');
for(Integer i=0;i<MName.size();i++)
{
MName[i] = (MName[i].substring(0,1)).toUppercase() +(MName[i].substring(1,MName[i].length()).toLowercase());
if(i>0)
{
a.Middle_vod__c=a.Middle_vod__c+' '+MName[i];
}
else a.Middle_vod__c=MName[i];
}
}
String l = a.LastName;
List<String> LName= l.split(' ');
for(Integer i=0;i<LName.size();i++)
{
LName[i] = (LName[i].substring(0,1)).toUppercase() +(LName[i].substring(1,LName[i].length()).toLowercase());
if(i>0)
{
a.LastName=a.LastName+' '+LName[i];
}
else a.LastName=LName[i];
}
a.Name=a.FirstName+a.Middle_vod__c+a.lastname;
// For Mc'
String N = a.Name;
List<String> FindName= N.split(' Mc');
for(Integer i=0;i<FindName.size()-1;i++)
{
FindName[i+1] = (FindName[i+1].substring(0,1)).toUppercase() +(FindName[i+1].substring(1,FindName[i+1].length()));
if(i>0)
{
a.Name=a.Name+' '+FindName[i+1];
}
else a.Name=FindName[i+1];
}
//
//update a;
}
// For Business Accounts
else { String business = a.Name;
List<String> BName= business.split(' ');
for(Integer i=0;i<BName.size();i++)
{
BName[i] = (BName[i].substring(0,1)).toUppercase() +(BName[i].substring(1,BName[i].length()).toLowercase());
if(i>0)
{
a.Name=a.Name+' '+BName[i];
}
else a.Name=BName[i];
}
}
// Special Characters for any Account
String Spl = a.Name;
//name = name.split('-')[0]+'*';
List<String> SpclName= Spl.split('[-]');
for(Integer j=0;j<SpclName.size()-1;j++)
{
SpclName[j+1] = (SpclName[j+1].substring(0,1)).toUppercase() +(SpclName[j+1].substring(1,SpclName[j+1].length()));
if(j>0)
{
a.Name=a.Name+' '+SpclName[j+1];
}
else a.Name=SpclName[j+1];
}
}
}