pretty straightforward concept, really. basically, want following:
mcdonald => mcdonald mcdowell => mcdowell mcintosh => mcintosh etc. i'm looking things iphone => iphone, i'm going use set list that. however, names change regularly, , inconvenience keep running list (even if cms).
is possible this? looking @ regex, couldn't think of way (make letter before second capital lowercase)
this seems work:
var convertname = function(name){ var pattern=/^(.*?[a-z][a-z])(.*)$/g; if(pattern.test(name)){ return name.replace(pattern,function(t,a,b){ return a+b.touppercase(); }); } else{ return name.touppercase(); } }; it looks first upper-case letter after first lower-case letter, separates first part rest , makes rest upper-case. happens, if such pattern found. otherwise returns name in upper-case.
usage
convertname('mcdonald'); // mcdonald convertname('mcdowell'); // mcdowell convertname('mcintosh'); // mcintosh convertname('iphone'); // iphone convertname('smith'); // smith replacing multiple instances
the simplest way matching every group of letters , putting function. can use:
"word, test, “words”, mcintosh name, herbert-mcintosh. upper-case.".replace(/(\w+)/g,function(t,w){ return convertname(w); }); // "word, test, “words”, mcintosh name, herbert-mcintosh. upper-case." // prefix after dash ^^^
Comments
Post a Comment