title: How to effectively parse and standardize complex person full name in java
body: <p>I want an efficient and flexible way to parse person full name and standardize its format.</p>
  
  <p>The name can be found in different formats according to culture, can be composed of different parts (first, last, middle, initial, title, suffix, prefix, generational...) and some of the name parts should be predefined in a configurable list of values:</p>
  
  <p>For example, the name formats (patterns) can be:</p>
  
  <ul>
  <li>first-name last-name               like "John Smith"</li>
  <li>last-name, first-name              like "Smith, John"</li>
  <li>first-name middle-name last-name   like "John Michael Smith"</li>
  <li>first-name initial last-name       like "John M. Smith"</li>
  <li>title first-name last-name         like "Dr. John Smith"</li>
  <li>title first-name last-name suffix  like "Dr. John Smith II"
  and so on...</li>
  </ul>
  
  <p>For example, the predefined list of value can be:</p>
  
  <ul>
  <li>For "title" part, the values can be (Dr., Doctor, Mr., Mrs. , ...).</li>
  <li>For "Suffix" part, the values can be (First, Second, I, II, III ...) 
  and so on...</li>
  </ul>
  
  <p>So, I need an efficient way, libraries or tools in java to parse the different name formats and finally generate a standard format so it can be used later in the application. This functionality is part of a batch job, it should be fast, the user should be able to define the different patterns and the name parts that contains fixed value as a configuration.</p>